簡體   English   中英

Cursor.execute與

[英]Cursor.execute with

所以我試圖使用cursor.execute在其中運行sql命令

cid = data[key]['customerid']
name = data[key]['name']
bdate = data[key]['birthdate']
ffon = data[key]['frequentflieron']

curs.execute("INSERT INTO customers (c,n,b,f) VALUES (%s,%s,%s,%s)) WHERE NOT EXISTS (Select 1 FROM customers WHERE customerid = (c) VALUES (%s));",(cid,name,bdate,ffon,cid))

試過了

curs.execute("""INSERT INTO customers (c,n,b,f) 
            VALUES (%s,%s,%s,%s) WHERE NOT EXISTS (
                Select 1 
                FROM customers 
                where customerid = %s);""",(cid,name,bdate,ffon,cid)

我現在收到此錯誤

   Traceback (most recent call last):
File "psy.py", line 44, in <module>
  custinfo(data,key)
File "psy.py", line 28, in custinfo
  where customerid = %s);""",(cid,name,bdate,ffon,cid))
psycopg2.ProgrammingError: syntax error at or near "WHERE"
LINE 2: ...ust1000','XYZ','1991-12-06','Southwest Airlines') WHERE NOT ...

我該如何同時插入帶where子句?

在占位符之后,您還有一個多余的括弧,您的子查詢需要進行一些修飾。 請嘗試:

curs.execute("""INSERT INTO customers (c,n,b,f) 
                VALUES (%s,%s,%s,%s) WHERE NOT EXISTS (
                    Select 1 
                    FROM customers 
                    where customerid = %s);""",(cid,name,bdate,ffon,cid))

嗯,也許語法是非法的。 嘗試以下方法:

curs.execute("""INSERT INTO customers (c,n,b,f) 
                VALUES (%s,%s,%s,%s) 
                ON CONFLICT (customerid) DO NOTHING);""",(cid,name,bdate,ffon,cid))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM