簡體   English   中英

Python mysql 記錄不存在時插入

[英]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.

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