簡體   English   中英

如何在python中的sql查詢中使用MySQL模式匹配和綁定參數?

[英]how to using MySQL pattern matching and binding parameters in sql query in python?

我知道如何使用 MySQL 模式匹配,例如:

SELECT * FROM table WHERE col LIKE '%mid%'

我也知道如何在python中將參數綁定到sql查詢中,例如:

import MySQLdb
s = 'something'
db = MySQLdb.connect(host=blablabla...)
cur = db.cursor()
sql = "SELECT * FROM table WHERE col = %s"
cur.execute(sql, s)
data = cur.fetchall()
db.close()

但我找不到一種方法將它們組合在一個查詢中,比如

sql = "SELECT * FROM table WHERE col LIKE '%%s%'"
cur.execute(sql, s)

其中第一個和第三個 '%' 是模式字符,中間的 '%s' 用於綁定參數 s。 有人有想法嗎?

好吧,我會自己回答..@dsgdfg 啟發了我,這是我的代碼:

sql = "SELECT * FROM table WHERE col LIKE %s"
cur.execute(sql, "%"+s+"%")
sql = "SELECT * FROM table WHERE col LIKE CONCAT('%', %s, '%')"
cur.execute(sql, s)

(我假設execute處理轉義,從而防止 SQL 注入。)

對於使用 py 魅力的人,你可以這樣做

qq=input("enter the author name:")
print(pd.read_sql_query("select Book_Id,Book_Name,book_author from bookd where book_author like '%s'" %("%"+qq+"%",), conn2))
                

在此處輸入圖片說明

暫無
暫無

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

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