gpt4 book ai didi

python - 预取列序列 SQLAlchemy

转载 作者:可可西里 更新时间:2023-11-01 07:18:35 24 4
gpt4 key购买 nike

我的模型非常复杂,我试图从现有存储过程中获取逻辑并将它们转换为 SQLAlchemy(出于可移植性原因)。

然而,我正在为未提交的数据而苦苦挣扎。

我有 user 表:1d,名称我有 status 表:id,name我有 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!应用程序损坏。

关于如何做到这一点有什么想法吗?请记住,这可能是一次被数千名用户访问的非常高的交易应用程序

最佳答案

找到答案 - 不知道为什么我以前没有看到这个!

Sequence 对象还具有像 SQL 表达式一样独立执行的能力,具有调用其“下一个值”函数的效果:

seq = Sequence('some_sequence')
nextid = connection.execute(seq)

关于python - 预取列序列 SQLAlchemy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15074804/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com