Python:在使用jupyter和mysql的SQL语句中没有使用所有参数



我试图使一个函数传递参数并在jupyter中返回查询,但它返回以下错误"并非所有参数都在SQL语句中使用"

现在我使用:

进行连接
import mysql.connector as connection
import pandas as pd
db = connection.connect (parameters of connection)

我的函数必须传递3个参数,并根据这些参数返回数据框及其查询,所以我正在做:

def param (id, id_user, date):
cursor = db.cursor()
if (id == '' or None) and (id_user == '' or None) and (date == '' or None):
query = 'select * from database'
df = pd.read_sql(query, db)
elif (id_user == '' or None) and (date == '' or None):
query = 'select * from database where id = %s'
df = pd.read_sql(query, db, params = id)
else:
print(':(')
return df

当我执行时出现错误:

param (18, '', '')

我做错了什么?

尝试传递一个元组作为params的值:

query = 'select * from database where id = %s'
df = pd.read_sql(query, db, params = (id,))  # change is here

在您当前的代码中,您直接传递了单个变量id,但最有可能的是它期待一个元组。