Tôi đã có một trường hợp mà hầu hết thời gian các mối quan hệ giữa các đối tượng là như vậy mà trước khi cấu hình một mong muốn (tham gia) tải về mối quan hệ có ý nghĩa. Tuy nhiên bây giờ tôi đã có một tình huống mà tôi thực sự không muốn tải mong muốn được thực hiện.Có thể SQLAlchemy háo hức/tham gia tải được ngăn chặn một lần thiết lập?
Tôi có nên xóa tải đã kết nối khỏi mối quan hệ và thay đổi tất cả các truy vấn có liên quan để tham gia tại vị trí truy vấn (ick) hay không, hoặc có cách nào đó để chặn tải mong muốn trong truy vấn sau khi được thiết lập?
Dưới đây là ví dụ khi tải mong muốn đã được thiết lập trên mối quan hệ Người dùng-> Địa chỉ. Có thể truy vấn ở cuối chương trình được cấu hình để KHÔNG tải háo hức không?
import sqlalchemy as sa
from sqlalchemy.ext.declarative import declarative_base
import sqlalchemy.orm as orm
##Set up SQLAlchemy for declarative use with Sqlite...
engine = sa.create_engine("sqlite://", echo = True)
DeclarativeBase = declarative_base()
Session = orm.sessionmaker(bind = engine)
class User(DeclarativeBase):
__tablename__ = "users"
id = sa.Column(sa.Integer, primary_key = True, autoincrement = True)
name = sa.Column(sa.String, unique = True)
addresses = orm.relationship("Address",
lazy = "joined", #EAGER LOAD CONFIG IS HERE
)
def __init__(self, Name):
self.name = Name
class Address(DeclarativeBase):
__tablename__ = "addresses"
id = sa.Column(sa.Integer, primary_key = True, autoincrement = True)
address = sa.Column(sa.String, unique = True)
FK_user = sa.Column(sa.Integer, sa.ForeignKey("users.id"))
def __init__(self, Email):
self.address = Email
##Generate data tables...
DeclarativeBase.metadata.create_all(engine)
##Add some data...
joe = User("Joe")
joe.addresses = [Address("[email protected]"),
Address("[email protected]")]
s1 = Session()
s1.add(joe)
s1.commit()
## Access the data for the demo...
s2 = Session()
#How to suppress the eager load (auto-join) in the query below?
joe = s2.query(User).filter_by(name = "Joe").one() # <-- HERE?
for addr in joe.addresses:
print addr.address
Đó có phải nó ... thx. – Russ