cursor.fetchone()返回None,但该行存在

时间:2019-05-03 03:03:00

标签: python-3.x flask mysql-connector

我现在正在尝试为我的Flask项目使用python和MySQL连接器从MySQL数据库中选择一行的某些特定列。但是,使用.fetchone(),结果将返回None。 这个问题可能是什么原因?

测试服务器位于Ubuntu 19.04(Disco)上,运行MySql5.7,Python 3.7和Flask 1.02。我尝试了不同的查询,例如  “ SELECT * FROM Table WHERE XXX”或“ SELECT count()FROM Table WHERE XXX”,它们都返回一些结果。我试图用选定的值创建一个临时表,然后从该临时表中选择所需的列,结果也是None,但count()为1。我还尝试在其中选择较少的列查询,其中一些返回行,而有些则不。

对于那些返回None的查询,我记录执行的查询,然后在MySql Application(在终端和WorkBench中)中运行它们,结果不是None。

cnx = mysql.connector.connect(user=username, password=password,
                                      host=hostname,
                                      database=db)
cur=cnx.cursor()

这是我尝试过的几个查询

cur.execute("CREATE TEMPORARY TABLE tmp CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci select col1, col2,col4,col5,col8 from Table where primary_key= %s and index=1;",(primary_key,))
cur.execute("SELECT count(*) FROM tmp")
print(cur.fetchone()) // this returns 1
cur.execute("SELECT * FROM tmp")
result=cur.fetchone()
print(result)// this returns None
cur.execute("SELECT * FROM Table where primary_key= %s and index=1;",(primary_key,))
print(cur.fetchone())// this has a result
cur.execute("SELECT count(*) FROM Table where primary_key= %s and index=1;",(primary_key,))
print(cur.fetchone())// this returns 1
cur.execute("SELECT col1, col2 FROM Table where primary_key= %s and index=1;",(primary_key,))
print(cur.fetchone())// this has a result
print(cur._executed) 

以下是我想在代码中使用的实际查询。

cur.execute("SELECT col1, col2, col4, col5,col8 FROM Table where primary_key= %s and index=1;",(primary_key,))
print(cur.fetchone())// this returns None
print(cur._executed) 

我希望查询返回包含所需列的行。 我知道为什么有些查询有效,但我不想使用。

请帮助我。

0 个答案:

没有答案