簡體   English   中英

SQLAlchemy 在提交前使用自動增量獲取主鍵

[英]SQLAlchemy Obtain Primary Key With Autoincrement Before Commit

當我創建了一個具有自動遞增主鍵的表時,有沒有辦法在不實際提交的情況下獲取主鍵(即保留主鍵之類的操作)?

我想在事務中放置兩個操作,但是其中一個操作將取決於在前一個操作中分配的主鍵。

你不需要commit ,你只需要flush 這是一些示例代碼。 在調用flush之后,您可以訪問分配的主鍵。 請注意,這是 SQLAlchemy v1.3.6 和 Python 3.7.4。

from sqlalchemy import *
import sqlalchemy.ext.declarative

Base = sqlalchemy.ext.declarative.declarative_base()

class User(Base):
    __tablename__ = 'user'
    user_id = Column('user_id', Integer, primary_key=True)
    name = Column('name', String)

if __name__ == '__main__':
    import unittest
    from sqlalchemy.orm import *
    import datetime

    class Blah(unittest.TestCase):
        def setUp(self):
            self.engine = create_engine('sqlite:///:memory:', echo=True)
            self.sessionmaker = scoped_session(sessionmaker(bind=self.engine))
            Base.metadata.bind = self.engine
            Base.metadata.create_all()
            self.now = datetime.datetime.now()

        def test_pkid(self):
            user = User(name="Joe")
            session = self.sessionmaker()
            session.add(user)
            session.flush()
            print('user_id', user.user_id)
            session.commit()
            session.close()

    unittest.main()

您可以使用多個事務並在 scope 中對其進行管理。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM