Я только начал использовать Pyodbc, и я пытаюсь запустить запрос, который, как я знаю, отлично работает с помощью Sequel Pro. Запрос должен возвращать несколько строк, однако я могу получить только один.
Вот мой запрос:
with connection.cursor() as cursor:
# Read a single record
sql = "select 'T4'.'id', 'T4'.'r_id', 'structure'.'l2_id', 'structure'.'l2_name' from (select 'T3'.'id', 'T3'.'r_id', 'item'.'L6_ID' from (select 'T2'.'id', 'report'.'r_id' from (select 'T1'.'id' from (select 'entity'.'id' from 'entity' where 'entity'.'id' = %s) as 'T1' inner join 'coverage' on 'T1'.'id' = 'coverage'.'id') as 'T2' inner join 'report' on 'T2'.'id' = 'report'.'id') as 'T3' inner join 'item' on 'T3'.'r_id' = 'item'.'r_id') as 'T4' inner join 'structure' on 'T4'.'l6_id' = 'structure'.'l6_id'"
cursor.execute(sql, ('id1',))
result = cursor.fetchone()
for row in result:
print(row[0])
Есть идеи?
Спасибо!
fetchone() выбирает одну строку. Вероятно, вы захотите использовать fetchall(). Например:
rows = cursor.fetchall()
for row in rows:
print(row[0])
Попробуйте это, возможно:
result = cursor.fetchall()
или же
result = cursor.fetchmany()
Ссылка:
https://dev.mysql.com/doc/connector-python/en/connector-python-api-mysqlcursor-fetchall.html
https://dev.mysql.com/doc/connector-python/en/connector-python-api-mysqlcursor-fetchmany.html