我有這樣的代碼
cursor_local.execute("""SELECT "Name", "Level_Capacity", "Source_NE", "Sink_NE" FROM "table1" WHERE "Name" LIKE '%WDM%' """)
rows = cursor_local.fetchall()
psycopg2.extras.execute_batch(cursor_local, 'INSERT INTO table2("Name", "Level_Capacity", "Source_NE", "Sink_NE") VALUES (%s, %s, %s, %s)', (*rows,) )
connection_local.commit()
并且我只想將新記錄從 table1 (postgres db) 插入 table2,只有那些不在 table2 中的記錄。在 table2 中“Id”是自動生成的并且是唯一的(其他的不是唯一的),插入時我想檢查它是否存在“Name”、“Source_NE”、“Sink_NE”。
uj5u.com熱心網友回復:
“名字”是獨一無二的嗎?也許你可以做一個 ON CONFLICT Name 什么都不做
INSERT INTO table2
VALUES ,,,
ON CONFLICT 'Name' DO NOTHING;
否則你可以做一個 NOT IN (SELECT "Name" etc FROM table2) 等等
INSERT INTO table2
VALUES (
SELECT * FROM table1 WHERE ('Name' etc)
NOT IN (SELECT 'Name', etc FROM table2)
)
uj5u.com熱心網友回復:
有用:
INSERT INTO "table2" ("Name", "Level_Capacity", "Source_NE", "Sink_NE")
SELECT "Name", "Level_Capacity", "Source_NE", "Sink_NE"
FROM "table1" WHERE ("Name", "Source_NE", "Source_Port", "Sink_NE", "Sink_Port") NOT IN (SELECT "Name", "Source_NE", "Source_Port", "Sink_NE", "Sink_Port" FROM "table2");
謝謝你
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/364931.html
標籤:Python sql PostgreSQL的
下一篇:是否可以加入多行
