我的模型非常复杂,我试图从现有的存储过程中获取逻辑并将它们转换为 SQLAlchemy(出于可移植性原因)。
然而,我正在努力处理未提交的数据。
我有user
表:1d,名称我有status
表:id,名称我有user_statuses
表:id、user_id、status_id、from_dt、to_dt
现在,我需要在单个事务中填充所有这些表,否则会失败。问题:
user = User(name = 'Test')
status = Status(name = 'Active')
db.session.add(user)
db.session.add(status)
# Oooopa! This is where it fails
user_session = UserStatuses(user_id=user.id, status_id=status.id, datetime.utcnow(), datetime(9999,01,01,00,00,00))
# both user.id and status.id = None as it's uncommited!
本质上,我需要能够在没有显式 SQL 的情况下访问表序列。为什么?为了便携。目前我使用 PGSQL 并且可以这样做:
class User(Base):
....
@staticmethod
def prefetch_id():
db.session.execute("SELECT NEXTVAL('user_id_seq');").scalar()
将引擎更改为 MySQL & BANG!应用程序损坏。
关于如何做到这一点的任何想法?请记住,这可能是一个非常高的事务应用程序,一次被成千上万的用户访问