[英]Python mysql insert when record does not exist
我有一張桌子,里面有這樣的文章:
表:artPerBrand
列:ID(自動遞增)、BrandID、ArtCat、ArtNrShort、ArtNrLong、Active
我想插入新文章(使用 python 腳本),但前提是相同的 ArtNrLong 不存在。
我不能通過使 ArtNrLong 獨一無二來做到這一點,因為我有多種情況,有時,我可以在表中使用相同的 ArtNrLong。
所以我根據這個輸入創建了這個 sql 語句( https://www.geeksforgeeks.org/python-mysql-insert-record-if-not-exists-in-table/ )。
cur.execute ("INSERT INTO artPerBrand (BrandID, ArtCat, ArtNrShort, ArtNrLong, Active)\
select * from (Select" + varBrandID, varArtCat, varArtNrShort, varArtNrLong,1 +") as temp \
where not exists (Select ArtNrLong from artPerBrand where ArtNrLong="+varArtNrLong+") LIMIT 1")
我也試過這個選項:
sql = "INSERT INTO artPerBrand(BrandID, ArtCat, ArtNrShort, ArtNrLong, Active) VALUES (%s, %s, %s, %s, %s) WHERE NOT EXISTS (SELECT * FROM artPerBrand WHERE ArtNrLong = %s)"
val = (varBrandID, varArtCat, varArtNrShort, varArtNrLong 1, varArtNrLong)
cur.execute(sql, val)
我收到一個一般錯誤,告訴我查詢是錯誤的。 我在這里誤會了一些引號嗎?
結合評論中的幫助,我找到了解決方案:
sql = "INSERT INTO artPerBrand(BrandID, ArtCat, ArtNrShort, ArtNrLong, Active) SELECT %s, %s, %s, %s, %s FROM DUAL WHERE NOT EXISTS (SELECT * FROM artPerBrand WHERE ArtNrLong = %s)"
val = (varBrandID, varArtCat, varArtNrShort, varArtNrLong 1, varArtNrLong)
cur.execute(sql, val)
是的,查詢不正確。
Select" + varBrandID, varArtCat, varArtNrShort, varArtNrLong,1 +
它應該是什么
Select" + varBrandID+", "+ varArtCat", "+ varArtNrShort", "+ varArtNrLong", "+ 1 +
其次,如果它們是 integer 值你不能添加它們,你必須使用
str(varBrandID)
如果你想將它們用作整數,不要連接它們,分配它們
"select %d,%d,%d,%d from x"%(val1,val2,val3,val4)
sql = "INSERT INTO artPerBrand(BrandID, ArtCat, ArtNrShort, ArtNrLong, Active) SELECT %s, %s, %s, %s, %s FROM DUAL WHERE NOT EXISTS (SELECT * FROM artPerBrand WHERE ArtNrLong = %s)"
val = (varBrandID, varArtCat, varArtNrShort, varArtNrLong 1, varArtNrLong)
cur.execute(sql, val)
這對我有用!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.