seq_data
次のようなpostgresテーブルがあります。
data_id | machine | run | cell | run_start | library | expected_dir | transferred | failed | cloud | csv_uploaded | last_updated
---------+---------+--------------+-------+------------+---------+---------------------------------------------------+-------------+--------+-------+--------------+-------------------------------
1 | rsii_1 | RUN001 | B01_1 | 2020-02-05 | N/A | some/dir | t | f | t | t | 2020-02-07 11:24:17.279879+00
2 | rsii_1 | RUN001 | C01_1 | 2020-02-05 | N/A | some/dir | t | f | t | t | 2020-02-07 11:24:17.279879+00
私がやろうとしているのは、列ライブラリを更新することです。
私が行った場合:
data_monitor=> UPDATE seq_data SET failed=TRUE WHERE data_id=2;
UPDATE 1
それは動作し、私は得ます:
data_id | machine | run | cell | run_start | library | expected_dir | transferred | failed | cloud | csv_uploaded | last_updated
---------+---------+--------------+-------+------------+---------+---------------------------------------------------+-------------+--------+-------+--------------+-------------------------------
1 | rsii_1 | RUN001 | B01_1 | 2020-02-05 | N/A | some/dir | t | f | t | t | 2020-02-07 11:24:17.279879+00
2 | rsii_1 | RUN001 | C01_1 | 2020-02-05 | N/A | some/dir | t | t | t | t | 2020-02-07 11:24:17.279879+00
しかし、私がするとき:
data_monitor=> UPDATE seq_data SET library=this_library WHERE data_id=1;
ERROR: column "this_library" does not exist
LINE 1: UPDATE seq_data SET library=this_library WHERE data_id=1;
私が実際にやりたいのは、に基づいlibrary
て編集することです。run
cell
machine
data_monitor=> UPDATE seq_data SET library=this_library WHERE machine=rsii_1 and run=RUN001 and cell=B01_1;
ERROR: column "rsii_1" does not exist
LINE 1: ...E seq_data SET library=this_library WHERE machine=rsii_1 and...
なぜこうなった?
UPDATE seq_data SET library=this_library WHERE machine=rsii_1 and run=RUN001 and cell=B01_1;
列をスキップして混乱しているようでlibrary
、実際には列名が値であると考えて、this_library
バージョン: postgresql-11
そして、これが私がテーブルを作成した方法です:
CREATE TABLE seq_data (
data_id serial NOT NULL,
machine varchar(10) NOT NULL,
run varchar(30) NOT NULL,
cell varchar(10) NOT NULL,
run_start date NOT NULL,
library varchar(25) NOT NULL DEFAULT 'N/A',
expected_dir varchar(100),
transferred boolean NOT NULL DEFAULT 'f',
failed boolean NOT NULL DEFAULT 'f',
cloud boolean NOT NULL DEFAULT 'f',
csv_uploaded boolean NOT NULL DEFAULT 'f',
last_updated timestamp with time zone DEFAULT now(),
PRIMARY KEY (data_id),
CONSTRAINT data_id UNIQUE (machine, run, cell)
);
アップデート
Python3.7 で psycopg2 を使用
dbconn.query(
'''UPDATE seq_data
SET library=%s
WHERE run=%s and machine=%s and cell=%s;''',
(sample_name[1], run, machine, sample_name[0],), commit=True)
Pythonでこれらを引用符で囲むにはどうすればよいですか? すべての変数はすでに文字列です。