Невозможно распаковать результат запроса pymysql в переменные

0

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

Я выполняю запрос, который, как я знаю, будет ВСЕГДА возвращать только одну строку с 3 значениями в ней. Я хочу распаковать эти значения в отдельные переменные, но только последнее, похоже, действительно имеет какую-то ценность.

Вот мой код:

import pymysql

cnx = pymysql.connect(host=dbHost, database=dbName, user=dbUser, passwd=dbPass)
query = "select id_parameter,unit,shortname from t_list_metpara where shortname='TT'"

with cnx.cursor() as cursor1:
    cursor1.execute(query)
    row = cursor1.fetchone()

cnx.close()
id_parameter, unit, shortname = row[:3]

print(row)
print(id_parameter, unit, shortname)
print([type(v) for v in [id_parameter, unit, shortname]])
print([row[v] for v in [0, 1, 2]])

и результат:

(1, '°C\r', 'tt')
 tt
[<class 'int'>, <class 'str'>, <class 'str'>]
[1, '°C\r', 'tt']

Может ли кто-нибудь объяснить мне, почему Python (или пакет pymysql) ведет себя таким образом и что я могу сделать, чтобы избежать этого?

Теги:

1 ответ

1
Лучший ответ

Это не имеет ничего общего с pymysql или даже с самим Python, и нет ничего плохого в ваших переменных.

\r означает символ возврата каретки. Если вы печатаете что-то, за которым следует a \r, позиция курсора вернется к началу строки; следующий символ начнется с начала этой строки. Если вы напечатали каждый из id_paramter, unit и shortname отдельно, вы увидите все данные.

  • 0
    Я не уверен, как я это пропустил ... В любом случае, спасибо!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню