sql炼金术与python的限定关键字

2024-03-29 11:07:39 发布

您现在位置:Python中文网/ 问答频道 /正文

现有数据库和sqlalchemy。使用反射我想查询这样的数据库,但有一个问题。表被称为“logs”,它有两个外键,两个外键都指向表“server”。表服务器有一个名为“class”的列,这个名称在python中受到限制。你知道吗

代码:

from sqlalchemy import orm, create_engine
from sqlalchemy.ext.automap import automap_base
from django.conf import settings


base = automap_base()

connection_setup = (
    "{driver}://{user}:{password}@{host}:{port}/{dbname}".format(
        **settings.ALCHEMY_DB))

engine = create_engine(connection_setup, echo=False)

base.prepare(engine, reflect=True)

scoped_session = orm.scoped_session(orm.sessionmaker(bind=engine))

session = scoped_session()

logs = base.classes.logs
server = base.classes.server

local_server = orm.aliased(server, name='local_server')
remote_server = orm.aliased(server, name='remote_server')

query = (
    session
    .query(
        logs, local_server.class, remote_server.class)
    .outerjoin(
        local_server, logs.local_server_id == local_server.id
    )
    .outerjoin(
        remote_server, logs.remte_server_id == remote_server.id
    )
)

rows = query.all()

例外情况:

  File "ff.py", line 29
      logs, local_server.class, remote_server.class)
                                              ^
SyntaxError: invalid syntax

如何处理这样的问题?你知道吗


Tags: fromimportidbaseserverremotesqlalchemysession