Python MySQL连接器中的变量在函数中不工作
我已经做了一个函数来整理我将在程序中执行的SQL调用。 通常情况下,这会起作用Python MySQL连接器中的变量在函数中不工作,python,mysql,mysql-python,Python,Mysql,Mysql Python,我已经做了一个函数来整理我将在程序中执行的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 =
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
record = SqlQuery(mydbr, sql[0], artist)
查询列表
sql = ["SELECT song FROM charts WHERE artist=%s"]
我的函数调用如下所示
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
record = SqlQuery(mydbr, sql[0], artist)
但是,每当它运行时,它都没有添加变量,我观察了通过wireshark发送的内容,看起来是这样的
SELECT song FROM charts WHERE artist=%s
任何帮助都将是巨大的该死的,我尝试了这么多的变化,但这个网站有一个正确的 应该是
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
示例
:
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)
谢谢你的意见。这样做的目的是使它成为一个函数,这样我就不必每次都编写5行代码来执行查询。