[英]Variables in Python MySQL connector not working when in function
我制作了一個函數來整理我將在我的程序中執行的 SQL 調用。 通常這會起作用
mycursor = mydbr.cursor()
mycursor.execute("SELECT song FROM charts WHERE artist=%s",(artist,))
x = mycursor.fetchone()
我的功能看起來像這樣
import mysql.connector
def SqlQuery(connection, query, forvar1 = None, forvar2 = None):
sqlobj = connection.cursor()
if forvar1 is None and forvar2 is None:
sqlobj.execute(query)
if forvar1 is not None and forvar2 is None:
sqlobj.execute(query, forvar1)
if forvar1 is not None and forvar2 is not None:
queryvars = (forvar1,forvar2)
sqlobj.execute(query % queryvars)
result = sqlobj.fetchone()
connection.commit
return result
查詢列表
sql = ["SELECT song FROM charts WHERE artist=%s"]
我的函數調用看起來像這樣
record = SqlQuery(mydbr, sql[0], artist)
但是每當它運行時,它根本就沒有添加變量,我看過通過wireshark發送的內容,看起來像
SELECT song FROM charts WHERE artist=%s
任何幫助都會很棒
該死的,我嘗試了這么多變體,但這個網站有一個正確的
https://pynative.com/python-mysql-select-query-to-fetch-data/
sqlobj.execute(query, forvar1)
本來應該
sqlobj.execute(query, (forvar1,))
請,正確的語法和我描述如下:
import mysql.connector
def SqlQuery(connection, query, forvar1 = None, forvar2 = None):
sqlobj = connection.cursor()
if forvar1 is None and forvar2 is None:
sqlobj.execute(query)
if forvar1 is not None and forvar2 is None:
sqlobj.execute(query, (forvar1, ) )
if forvar1 is not None and forvar2 is not None:
queryvars = (forvar1,forvar2, )
sqlobj.execute(query, queryvars)
result = sqlobj.fetchone()
connection.commit
return result
Example
:
import mysql.connector
mydb = mysql.connector.connect(
host="localhost",
user="yourusername",
passwd="yourpassword",
database="mydatabase"
)
mycursor = mydb.cursor()
sql = "SELECT * FROM customers WHERE address = %s"
adr = ("Yellow Garden 2", )
mycursor.execute(sql, adr)
myresult = mycursor.fetchall()
for x in myresult:
print(x)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.