我正在使用 Python CGI 和 MySQL (phpmyadmin)。我正在尝试在 python 中运行此 SQL 语句:(本例中 tk_journey = 620 - %s 所在的位置)
SELECT tk_id, tk_seat_number FROM tickets
WHERE tk_journey = '%s'
ORDER BY tk_id DESC LIMIT 1;
它在 phpmyadmin 中完美运行并显示它应该显示的内容(就是这个):
tk_id tk_seat_number
94 2
但是,当我通过 python 脚本运行它时,它会为每个脚本返回 None/NoneType。
我尝试过使用这个:SELECT MAX(tk_id), tk_seat_number FROM tickets WHERE tk_journey = '%s'
但这给出了相同的结果。
我尝试使用不带引号的 %s,但它也在 mysql 语法中生成了错误。我还尝试关闭和打开数据库连接 - 没有成功。 我已经尝试研究这个问题很多但没有帮助。
这是Python代码:
def getSeatNum(jid):
statement = '''SELECT tk_id, tk_seat_number FROM tickets
WHERE tk_journey = '%s'
ORDER BY tk_id DESC LIMIT 1;'''
cursor.execute(statement, jid)
row = cursor.fetchone()
seat_num = row[0]
return(seat_num)
seat_no = getSeatNum(jid)
jid = 620。 数据库连接工作正常,因为还有其他几个与选择/插入信息到表中类似的功能,但这个似乎失败了?
提前致谢!
编辑:我不确定这是否是我应该做的。这被标记为此问题的重复项:Python MySQL TypeError 。我从来没有遇到过这个类型错误。如果程序运行时没有生成错误 - 它只是返回“NULL”,这反过来会影响后面的程序,因为变量将只是“NULL”。我遇到的错误是如上所示的 SQL 语法错误以及当我摆弄让它工作时的各种 Python 错误。不是这个 TypeError 。
最佳答案
cursor.execute() 的第二个参数必须是一个元组,其中包含填充查询中所有占位符的值。即使只有一个占位符,您也需要一个元组。所以应该是:
cursor.execute(statement, (jid,))
关于python - MySQL - 即使包含整数也返回 NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42613195/