1

当调用函数时传递函数中 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 语句吗?请帮忙。

4

0 回答 0