DB - SQLAlchemy设置
考虑两个表的经典设置 - user
和 api_key
,用SQLAlchemy对象表示为:
class User(Base):
__tablename__ = 'user'
user_id = Column(String)
user_name = Column(String)
vioozer_api_key = Column(String, ForeignKey("api_key.api_key"))
class ApiKey(Base):
__tablename__ = 'api_key'
api_key = Column(String(37), primary_key=True)
出于清晰起见,其他字段被省略。
我的查询
假设我想获取特定用户ID的用户名和API密钥:
user, api_key = database.db_session.query(User, ApiKey)\
.join(ApiKey, User.vioozer_api_key==ApiKey.api_key)\
.filter(User.user_id=='user_00000000000000000000000000000000').first()
我得到了两个对象——user
和api_key
,可以从中获取user.name
和api_key.api_key
。
问题
我想用一个函数将这个调用包装起来,返回一个对象,该对象的字段将是user
字段和api_key
字段的并集——就像SQL的join
返回一个带有被连接的两个表的列的表一样。 是否有一种方法可以自动获取一个对象,其字段是两个表字段的并集?
我尝试过什么
我可以为每个Join操作定义一个mapper class,但我想知道是否可以自动完成映射。