我有一个Python列表,我试图插入或更新到Postgresql。我已经尝试了for循环和while循环,但是当我试图检查用户已经存在于postgres中时它会变得混乱。我想遍历列表列表并插入/更新postgres中的每个用户。
我有以下变量,你建议我选择哪种方式?我的最后一个镜头是if存在,它不适用于postgres ..
userList = [user1, user2, user3]
i=0
while ( i < len(userList)):
query = "IF EXISTS (SELECT * FROM login WHERE email = '" + userList[i][2] + "') INSERT INTO login (created, username, password, email) VALUES (NOW(), '" + userList[i][0] + "','" + userList[i][1] + "','" + userList[i][2] + "')"
i += 1
settings.database_connection.execute_sql(query)
提前谢谢!
答案 0 :(得分:0)
PostgreSQL 9.5中有新功能(所谓的UPSERT)。所以你可以插入或更新一行:
INSERT INTO login VALUES (<your values>)
ON CONFLICT(email) DO UPDATE SET password=..., email=...;
官方文档中的更多详细信息:PostgreSQL 9.5.1 Documentation: INSERT