cursor.fetchone () возвращает None, но строка существует - PullRequest
0 голосов
/ 03 мая 2019

Я сейчас пытаюсь выбрать некоторые из конкретных столбцов одной строки из базы данных MySQL, используя python и MySQL-коннектор для моего проекта Flask. Однако, с .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», все они возвращают некоторые результаты. Я попытался создать временную таблицу с выбранным значением, а затем выбрать нужные столбцы из временной таблицы, результат также Нет, но счетчик () равен 1. Я также попытался выбрать меньшее количество столбцов в запрос, некоторые из них возвращают строку, а некоторые нет.

Для тех запросов, которые возвращают None, я регистрирую выполненные запросы и запускаю их в приложении MySql (как в терминале, так и в 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) 

Я ожидаю, что запрос вернет строку с нужными столбцами. Я имею в виду, почему некоторые запросы работают, но не тот, который я хочу использовать.

Пожалуйста, помогите мне в этом.

...