Приведенный ниже код печатает все имена таблиц и столбцов из базы данных Access:
import pyodbc
conn_str = (
r'DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};'
r'DBQ=O:\MAP\05_Reporting\2018_MAPDB_NewServer_Playground.accdb;'
r'PWD=L56dx09b2syijhr;'
r'UID=repMAP;'
)
cnxn = pyodbc.connect(conn_str)
cursor = cnxn.cursor()
table_names = [table_info.table_name for table_info in cursor.tables()]
table_names_gen = (table_info.table_name for table_info in cursor.tables())
for table_name in table_names:
print(f'TABLE NAME: {table_name}')
for row in cursor.columns(table=table_name):
print(f' COLUMN NAME: {row.column_name}')
Это работает, однако, если - для эффективности - я заменяю for table_name in table_names
на for table_name in table_names_gen
, он будет печатать только имя первой таблицы и имена ее столбцов.
В чем может быть причина?