Я испытываю странное поведение, когда SQLAlchemy не перебирает все результаты запроса.
Например, у меня есть следующий код Python:
engine = create_engine(<connection string>)
Session = sessionmaker(bind=engine)
session = Session()
columns = session.query(Column)
counter = 1
for c in columns
print(counter)
counter = counter + 1
print('count: ' + str(columns.count()))
где Columnэто класс, который я определил и отобразил обычным способом SQLAlchemy:
from base import Base
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String, Boolean
class Column(Base):
__tablename__ = 'COLUMNS'
__table_args__ = {'schema' : 'INFORMATION_SCHEMA'}
table_catalog = Column(String)
table_schema = Column(String)
table_name = Column(String)
column_name = Column(String, primary_key=True)
data_type = Column(String)
Из моего запроса я ожидаю, что будет возвращено 7034 строки, и это то, что выводит окончательный оператор print (дляcolumns.count ()), но цикл for получает только до 2951 счетчика печати.
Если я сделаю что-нибудь еще с возвращенными данными в цикле for, обработается только 2951, а не все 7034.
Кто-нибудь знает, почему я испытываю это несоответствие, и как я могу перебрать все 7034 строки, а не только 2951?