python操作數據庫時,字符串拼接時,字符串嵌入單引號,引號多層嵌入問題記錄


問題場景還原

mysql數據庫中
在編寫update sql后,想使用python進行數據庫批量操作,此時必須以sql特定格式執行才可
如下面修改數據的sql模板

update user_info set packge='["xxx"]' where id = 'xxx'

此時使用sql進行操作數據庫,以下為模版,

import pymysql
 
# 打開數據庫連接
db = pymysql.connect("localhost","testuser","testpassword","TESTDB" )
 
# 使用 cursor() 方法創建一個游標對象 cursor
cursor = db.cursor()

id = [1]
update_sql = "update user_info set packge='%s' where id = %s" % (str(["xxx"]),id[0])
# 使用 execute()  方法執行 SQL  
cursor.execute(update_sql)
 
# 使用 commit() 方法進行提交.
data = cursor.commit()
 
print ("Database version : %s " % data)
 
# 關閉數據庫連接
db.close()

此時遇到報錯,提示sql語法不支持,那就先把這段執行sql打印出來,如下圖

可以發現字符串中的我想使用["xxx"],里面的雙引號轉成單引號了,這就很郁悶

解決辦法

方式1:
在雙引號前面加個轉義符 \ ,即反斜杠,如

# -*- coding:utf-8 -*-
id = [1]
update_sql = "update user_info set packge='%s' where id = %s" % (str('[\"xxx\"]'),id[0])
print(update_sql)

執行結果:

方式2:
不要用str方法將列表轉為字符串即可,如下

# -*- coding:utf-8 -*-
id = [1]
update_sql = "update user_info set packge='%s' where id = %s" % ('["xxx"]',id[0])
print(update_sql)

執行結果:

問題總結

在遇到字符串引號多層嵌套時,雙層嵌套用字符串格式化即可,三層嵌套,字符串格式化+以上兩種方法即可,如果出現數據效果不是你想要的,建議去掉str()方法后再試試,可能有奇效


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM