当调用函数时传递函数中 SQL 语句的参数时,mysql-connector 先返回 eof,然后返回 'columns' 行。这导致通过首先处理 eof 行来显示空结果。
以下代码有效并返回一行。但是,如果我在通过调用函数传递值时将 data = ('ABC','XYZ') 替换为 data = (symbol,exchangetr),则代码不起作用并返回一个空元组。
import mysql.connector
import datetime
def connectToDB():
config = {
'user': '',
'password': '',
'host': '',
'raise_on_warnings': True,
'port':,
'database': '',
}
cnx = mysql.connector.connect(**config)
print('connection successful')
return cnx
def closeConnToDB(cnx):
cnx.close()
print('close connection successful')
cnx = connectToDB()
cnx.get_warnings = True
dBcursor = cnx.cursor()
def getInstrumentToken(symbol, exchangetr):
query = "SELECT abc FROM xyz WHERE x = %s and y = %s"
***data = ('ABC','XYZ')***
dBcursor.execute(query, data)
print(dBcursor.fetchwarnings())
print(dBcursor.fetchall())
dBcursor.close()
closeConnToDB(cnx)
return
getInstrumentToken('ABC', 'XYZ')
调试代码后,我意识到当我通过调用函数传递参数时,以下内容会从 MYSQL 服务器返回。
{'eof': {'warning_count': 0, 'status_flag': 33}, 'columns': [('instr_token', 3, None, None, None, None, 0, 4097)]}
但是当我通过硬编码数据变量直接传递参数时,我从 MYSQL 服务器得到以下信息。
{'columns': [('instr_token', 3, None, None, None, None, 0, 4097)], 'eof': {'warning_count': 0, 'status_flag': 33}}
通过首先处理 EOF 行,mysql-connector 错误地导致显示零行。我是 python 的新手,mysql-connector 似乎存在一些微妙的问题。我的代码有什么问题?我们不能从外部将参数传递给 SQL 语句吗?请帮忙。