python 重新加载过期对象时,get()查询不会加载joinedloaded关系
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 重新加载过期对象时,get()查询不会加载joinedloaded关系相关的知识,希望对你有一定的参考价值。
from sqlalchemy import Column, BigInteger, ForeignKey, create_engine
from sqlalchemy.orm import relationship, sessionmaker
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
Session = sessionmaker()
class Foo(Base):
__tablename__ = 'foo'
id = Column(BigInteger, primary_key=True, autoincrement=True)
bars = relationship('Bar', backref='foo', lazy='joined')
class Bar(Base):
__tablename__ = 'bar'
foo_id = Column(BigInteger, ForeignKey('foo.id'), primary_key=True)
bar_id = Column(BigInteger, primary_key=True, autoincrement=False)
class Hello(Base):
__tablename__ = 'hello'
id = Column(BigInteger, primary_key=True, autoincrement=True)
def main(sqlalchemy_dabatase_uri):
engine = create_engine(sqlalchemy_dabatase_uri, echo=True)
Base.metadata.create_all(bind=engine)
Session.configure(bind=engine)
session = Session()
try:
foo = Foo()
session.add(foo)
session.commit()
hello = Hello()
session.add(hello)
session.commit()
print('----------')
session.query(Foo).get(1)
print('----------')
except:
pass
Base.metadata.drop_all(bind=engine)
if __name__ == '__main__':
main('mysql+pymysql://local:Password!2@localhost:3306/test_utf8mb4?charset=utf8mb4')
from sqlalchemy import Column, BigInteger, ForeignKey, create_engine
from sqlalchemy.orm import relationship, sessionmaker
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
Session = sessionmaker()
class Foo(Base):
__tablename__ = 'foo'
id = Column(BigInteger, primary_key=True, autoincrement=True)
bars = relationship('Bar', backref='foo', lazy='joined')
class Bar(Base):
__tablename__ = 'bar'
foo_id = Column(BigInteger, ForeignKey('foo.id'), primary_key=True)
bar_id = Column(BigInteger, primary_key=True, autoincrement=False)
def main(sqlalchemy_dabatase_uri):
engine = create_engine(sqlalchemy_dabatase_uri, echo=True)
Base.metadata.create_all(bind=engine)
Session.configure(bind=engine)
session = Session()
try:
foo = Foo()
foo.bars.append(Bar(bar_id=1))
foo.bars.append(Bar(bar_id=2))
session.add(foo)
session.commit()
print('----------')
foo.bars
print('----------')
except:
pass
Base.metadata.drop_all(bind=engine)
if __name__ == '__main__':
main('mysql+pymysql://local:Password!2@localhost:3306/test_utf8mb4?charset=utf8mb4')
以上是关于python 重新加载过期对象时,get()查询不会加载joinedloaded关系的主要内容,如果未能解决你的问题,请参考以下文章
当会话 cookie 在 Laravel 中过期时重新加载站点
Hibernate:它是不是在 get() 之后使用 LockOptions.UPGRADE 重新加载对象
Hibernate框架学习——查询优化
pkg_resources.get_distribution("mymodule").version 重新加载后未更新
如果磁盘上的文件发生更改,如何重新加载 python 类?
如何在不重新加载窗口的情况下单击按钮时在 JSP 中进行更新查询?