¿Esto siempre pasa o no? En otras palabras, ¿guarda SQLAlchemy el orden (al generar consultas INSERT) cuando agrega nuevos objetos a la sesión?¿SQLAlchemy guarda orden al agregar objetos a la sesión?
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm.session import sessionmaker
from sqlalchemy.engine import create_engine
from sqlalchemy.types import Integer
from sqlalchemy.schema import Column
engine = create_engine('sqlite://')
Base = declarative_base(engine)
Session = sessionmaker(bind=engine)
session = Session()
class Entity(Base):
__tablename__ = 'entity'
id = Column(Integer(), primary_key=True)
Entity.__table__.create(checkfirst=True)
first = Entity()
session.add(first)
second = Entity()
session.add(second)
session.commit()
assert second.id > first.id
print(first.id, second.id)
Ninguno, en la producción que estoy usando PostgreSQL, SQLite es para la prueba.
No puedo encontrar el código en sqlalchemy que hace que esto sea así (es 'dict's y' set's en muchos lugares) ni puedo producir un contraejemplo convincente (excepto la falta de monotonicidad en la secuencia), y así +1 – SingleNegationElimination