【发布时间】:2020-02-23 15:58:37
【问题描述】:
我有两张这样的桌子:
class UserRole(tyrande.BaseModel):
"""SQLAlchemy UserRole model definition."""
__tablename__ = 'user_role'
id = sa.Column(sa.Integer, autoincrement=True, index=True, primary_key=True)
type = sa.Column(sa.String, nullable=False, unique=True)
class User(tyrande.BaseModel):
"""SQLAlchemy User model definition."""
__tablename__ = 'user'
id = sa.Column(sa.Integer, autoincrement=True, index=True, primary_key=True)
name = sa.Column(sa.String, index=True, nullable=False)
email = sa.Column(sa.String, unique=True, index=True, nullable=False)
password = sa.Column(sa.String, nullable=False)
birth_date = sa.Column(sa.Date, nullable=False)
role_id = sa.Column(
sa.Integer, sa.ForeignKey("user_role.id"), server_default='1')
is_verified = sa.Column(
sa.Boolean, server_default=sa.sql.expression.false(), nullable=False)
create_date = sa.Column(
sa.DateTime(timezone=True),
server_default=sa.sql.func.now(), nullable=False)
users = User.__table__
user_roles = UserRole.__table__
我想进行以下查询:
users.join(user_roles).select().where(users.c.email == 'dummy@dummy.com')
查询的执行给了我以下结果:
<Record id=11 name='standard_user' email='dummy@dummy.com' password='$2b$12$gxeX1JQgTOQp45siGAwbhOYUQdi//YabPH.aG318ZTjwQs94/1k2K' birth_date=datetime.date(2020, 2, 23) role_id=1 is_verified=False create_date=datetime.datetime(2020, 2, 23, 15, 35, 8, 871941, tzinfo=datetime.timezone.utc) id=1 type='STANDARD'>
它有两个名为“id”的字段,一个来自users 表,第二个来自user_roles。我怎样才能得到我想要的?这很混乱。
【问题讨论】:
标签: python sql python-3.x postgresql sqlalchemy