データがすでに存在するかどうかを最初に確認するINSERTステートメントを記述する必要があります。現在のコードは、PostgreSQLのDBに接続するためにpsycopg2を使用してのpythonの内側にある:python psycopg2条件付き挿入ステートメント
sql = """IF NOT EXISTS (SELECT * FROM table \
WHERE col_1 = (%s) AND col_2 = (%s)) \
INSERT INTO table (col1, col2) \
VALUES (%s, %s);"""
data = (col1_data, col2_data, col1_data, col2_data)
try:
CURSOR.execute(sql, data)
DB.commit()
except:
print "Cursor failed INSERT INTO table.\n"
動作しない(と私は品質エラー、私は何か良い情報を得ることはありませんので、取り扱いを行っていません)。 だから、私はpsqlのに行き、ちょうど試してみました:
IF NOT EXISTS (SELECT * FROM t WHERE c1=d1 AND c2=d2)
INSERT INTO t (c1, c2) VALUES (d1,d2);
を、私は次のエラーを得た:
ERROR: syntax error at or near "IF"
LINE 1: IF NOT EXISTS (SELECT * FROM table WHERE c1 = d1...
^
だから私は、私が間違っている可能性かかわらず、私のエラーは、SQLないのpython(であると信じて)この作品以降:
sql = """INSERT INTO t2 (col_0, col_1, col_2) \
VALUES (%s, %s, %s);"""
data = (d1, d2, time.time())
try:
CURSOR.execute(sql, data)
DB.commit()
except:
print "Cursor failed to INSERT INTO t2.\n"
表1のために、私のCREATEました:
db=> CREATE TABLE table (
col_0 SERIAL PRIMARY KEY,
col_1 varchar(16),
col_2 smallint
);
NOTICE: CREATE TABLE will create implicit sequence "pm_table_ip_id_seq" for serial column "pm_table.ip_id"
NOTICE: CREATE TABLE/PRIMARY KEY will create implicit index "pm_table_pkey" for table "pm_table"
CREATE TABLE
私は何か助けと指導に感謝します。
これらの2つの列はプライマリキーを構成できませんか? –