小编Tim*_*and的帖子

刷新数据库事务中的物化视图

是否可以在数据库事务中刷新物化视图?

我正在 Laravel 中为复杂查询编写测试用例,它使用事务在测试运行后回滚。

当我添加数据并刷新视图时 - 当我执行 select 语句时不会出现任何记录

postgresql transactions materialized-views rollback

5
推荐指数
1
解决办法
4062
查看次数

如何将所有染色体组合在一个文件中

我下载了1000个基因组数据(染色体1 -22),它是VCF格式的。如何将所有染色体合并到一个文件中?我应该首先将所有染色体转换为 plink 二进制文件,然后再执行吗--bmerge mmerge-list?或者还有其他方法可以将它们结合起来吗?请问有什么建议吗?

bioinformatics genetics vcf-variant-call-format

5
推荐指数
2
解决办法
7131
查看次数

为什么即使对象创建失败,Postgres 序列项也会上升?

我有一个 Postgres 项目,其中我的模型之一是Client,只需通过其主键进行索引。我在创建客户端时遇到了问题,因为有人创建了一个客户端,同时显式设置了我读过的主键,这不会影响 Postgres 的客户端序列表,该序列表负责在任何时候自动递增主键 1创建了一个 Client 对象。

我运行了一些 SQL 查询来研究它,发现当前序列值实际上比数据库中客户端的最高 ID 263 低 1,即 262,因此表明 ID 为 263 的客户端已经存在。我尝试在前端应用程序中创建一个客户端,再次收到错误,并决定重新运行查询。我看到数据库中没有像预期的那样创建新客户端,但我也注意到序列值确实达到了 263,因此当我尝试再次创建客户端时,它起作用了!

即使相关模型的创建失败,PostgreSQL 序列表也会递增,这是正常行为吗?如果是这样,这似乎可能会导致一些严重的问题。

postgresql database-sequence

5
推荐指数
1
解决办法
1485
查看次数

连接两个 Pandas DataFrame 同时保持索引顺序

我试图连接两个 DataFrame,生成的 DataFrame 按原始两个 DataFrame 的顺序保留索引。例如:

df = pd.DataFrame({'Houses':[10,20,30,40,50], 'Cities':[3,4,7,6,1]}, index = [1,2,4,6,8])


df2 = pd.DataFrame({'Houses':[15,25,35,45,55], 'Cities':[1,8,11,14,4]}, index = [0,3,5,7,9])
Run Code Online (Sandbox Code Playgroud)

使用pd.concat([df, df2])只是将 df2 附加到 df1 的末尾。我试图将它们连接起来以产生正确的索引顺序(0 到 9)。

python sorting indexing concatenation pandas

5
推荐指数
1
解决办法
6518
查看次数

防止 ActiveRecord 迁移对 db/struct.sql 进行巨大更改

在测试(而非生产)数据库上运行下面的 ActiveRecord 迁移时,db/structure.sql会出现较大的变化。这是可重现的。变化是:

  • 基于迁移代码的少量预期更改(根据需要)。
  • 大量意外的更改,这些更改与迁移代码无关(不是所希望的)。所有这些意外的更改都重新排列了迁移中 SQL 代码中未提及的表视图和物化视图的顺序。这些重新排列的表、视图和物化视图与迁移中的SQL代码中的项目关联(例如,通过依赖关系)。

是什么导致了这些巨大的不相关差异,最重要的是,如何防止这些巨大的不相关差异

它们是否与生产数据库服务器上的 postgresql 版本和在测试数据库上执行迁移的计算机上的 postgresql 版本不匹配有关?

这些不相关的更改使git diff输出的用处大大降低。GitHub 上的结果也是如此diff

在下面这个最小的示例中,仅重新排列了一些表。但在现实生活中(较大的)迁移中,它改变了数十个表、视图和 matview 的顺序 - 这是一个巨大的变化

class FixFooBarBaz < ActiveRecord::Migration[5.2]

  def up
    sql = <<~SQL
                  DROP VIEW master_foo;
                  DROP VIEW IF EXISTS bar1;
                  CREATE OR REPLACE VIEW bar1 AS
                  SELECT * FROM baz1
                  UNION ALL
                  SELECT * FROM baz2;
                  CREATE OR REPLACE VIEW master_foo AS
                  SELECT …
Run Code Online (Sandbox Code Playgroud)

ruby sql postgresql activerecord ruby-on-rails

5
推荐指数
1
解决办法
431
查看次数

我如何获得不可逆迁移?

我已经在我的用户表中添加了“激活”作为布尔值。我忘记将其添加为 false 作为默认值,所以我生成了此迁移:

rails g migration add_default_to_users_activated
Run Code Online (Sandbox Code Playgroud)

然后我在这里添加了第 3 行:

class AddDefaultToUsersActivated < ActiveRecord::Migration
  def change
    change_column_default :users, :activated, true
  end
end
Run Code Online (Sandbox Code Playgroud)

然后我运行迁移没有任何问题。我意识到我应该添加“false”而不是“true”,所以我想反转迁移并将 add_default_to_users_activated.rb 文件更改为“false”但是当我运行时

rake db:rollback
Run Code Online (Sandbox Code Playgroud)

rake 由于 ActiveRecord::IrreversibleMigration 而中止。

但是我设置的机制是什么,可以防止迁移被恢复以及如何修复它?

编辑:我正在运行 Rails 4.2

reverse ruby-on-rails rollback rails-migrations rails-activerecord

4
推荐指数
1
解决办法
2359
查看次数

子进程:无法将“_io.BufferedReader”对象隐式转换为 str

我正在编写一个脚本,它结合了snakemake 和python 代码来自动化成对出现的大量文件。更准确地说,我正在将读取与 BWA MEM 与成对的末端读取 ( http://bio-bwa.sourceforge.net/bwa.shtml )对齐。在脚本的第一部分,我遍历文件中的名称列表(它们是fastq bunzipped文件),然后在列表中相应地对它们进行排序。以下是一些文件的快速浏览:

[ 'NG-8653_ 1A _lib95899_4332_7_ 1 ', 'NG-8653_ 1A _lib95899_4332_7_ 2 ', 'NG-8653_ 1B _lib95900_4332_7_ 1 ', 'NG-8653_ 1B _lib95900_4332_7_ 2 ', 'NG-8653_ 1N _lib95898_4332_7_ 1 ',“NG-8653_ 1N _lib95898_4332_7_ 2 “]

如您所见,读取按两两排序(1A_... 1 和 1A ..._2 等...)。现在使用子进程,我想通过用 bunzip2 解压缩它们然后将它们通过 stdin 传递到 bwa mem 来对齐它们。bwa mem 命令将 fastq 格式文件转换为 .sam 文件,然后我必须使用 samtools 将它们转换为 .bam 格式。这是到目前为止的脚本:

import re, os, subprocess, bz2

WDIR = "/home/alaa/Documents/snakemake"
workdir: WDIR
SAMPLESDIR = "/home/alaa/Documents/snakemake/fastq/"
REF = …
Run Code Online (Sandbox Code Playgroud)

python subprocess bioinformatics snakemake

4
推荐指数
1
解决办法
2777
查看次数

如何获取表中每一列的空值计数

我有一个有 20 列的表。我如何知道某一列是否包含null值?如果有nulls ,如何计算它们的数量?

sql postgresql null aggregate-functions

4
推荐指数
1
解决办法
6276
查看次数

在 Ruby 语言中的一个 if 语句中使用多个条件

我在 Ruby 中写了这样的东西:

if a.max == a[0] 
  brand = b[0]
elsif a.max == a[1]
  brand = b[1]
elsif a.max == a[2]
  brand = b[2]
elsif a.max == a[3]
  brand = b[3]
end
Run Code Online (Sandbox Code Playgroud)

a并且b两者都是唯一的数组。

有什么方法可以检查所有ifelsif的情况相同吗?

只有一个条件a[0], a[1],a[2]a[3]?

ruby arrays loops if-statement max

4
推荐指数
1
解决办法
110
查看次数

更改 psql 中数字的打印方式

如何设置数字显示格式psql
我有许多 character varyingdouble precision列中select查询。我可以在每个数字列上使用to_char()round(),但是对于许多列,这会使代码过于重复。

有捷径吗?例如,是否有任何psql会话设置,例如\pset numeric '9.9EEEEE'(我只是编造的,不要尝试使用它)。我无法在手册中快速找到此类设置:PostgreSQL: Documentation: psql

例子:

-- Got this:
=# select bar from (values (123456789), (0.123456789), (0.000000123456789)) table_foo (bar);
        bar        
-------------------
         123456789
       0.123456789
 0.000000123456789

-- I have to use this workaround:
=# select to_char(bar, '9.9EEEEE') as bar from (values (123456789), (0.123456789), (0.000000123456789)) table_foo (bar);
   bar    
----------
  1.2e+08
  1.2e-01
  1.2e-07

-- I want this:
-- set some session …
Run Code Online (Sandbox Code Playgroud)

format postgresql floating-point rounding psql

4
推荐指数
1
解决办法
358
查看次数