我在SQLAlchemy中找不到此简单查询的解决方案示例。SQLAlchemy可以替换T-SQL ETL数据吗?
select a.field1, a.field2, b.field2
from database1.schema1.table_a as a
inner join database2.schema1.table_b as b
on a.fileld1 = b.fileld1
我将此连接用于Windows身份验证:
engine = create_engine(
"mssql+pyodbc://@{Server}/{database}?driver=SQL+Server?trusted_connection=yes"
)
您需要的是多部分架构名称。__table_args__
如果您使用的是声明式,则可以使用并使用它来执行查询。由于您省略了表或模型定义,因此我将根据您的查询示例生成示例:
In [8]: class TableA(Base):
...: __tablename__ = 'table_a'
...: __table_args__ = {
...: 'schema': 'database1.schema1'
...: }
...: id = Column(Integer, primary_key=True)
...: field1 = Column(Integer)
...: field2 = Column(Integer)
...:
In [9]: class TableB(Base):
...: __tablename__ = 'table_b'
...: __table_args__ = {
...: 'schema': 'database2.schema1'
...: }
...: id = Column(Integer, primary_key=True)
...: field1 = Column(Integer)
...: field2 = Column(Integer)
...:
In [10]: q = session.query(TableA.field1, TableA.field2, TableB.field2).\
...: join(TableB, TableA.field1 == TableB.field1)
In [12]: q.statement.compile(dialect=mssql.dialect())
Out[12]: <sqlalchemy.dialects.mssql.base.MSSQLCompiler at 0x7fa3886027b8>
In [13]: print(_)
SELECT database1.schema1.table_a.field1, database1.schema1.table_a.field2, database2.schema1.table_b.field2
FROM database1.schema1.table_a JOIN database2.schema1.table_b ON database1.schema1.table_a.field1 = database2.schema1.table_b.field1
问题内容: 在上一集中(如何在MySQL中构建跨数据库查询),我学习了如何在MySQL中构建跨数据库查询。这很好用,但是当我们的英雄尝试在PHP中使用这种新发现的知识时,他发现了他最好的朋友FAIL在等他。 我看了看PHP。这似乎暗示着,如果我想将MySQL与PHP结合使用,我有两种选择: 使用,但是每次只能使用一个数据库。这是我们当前的设置,将数据库作为名称空间标识符似乎不起作用(它在MySQL
问题内容: 我在同一台服务器上有两个数据库。Google给了我一些提示,但是我找不到任何“官方”信息。有人可以指出我的文档来说明如何执行此操作吗?使用PHP的说明也将很有用。谢谢! 问题答案: 我在同一台服务器上有两个数据库。…如何在MySQL中构建跨数据库查询? 通过在表的前面加上适当的数据库名称,可以访问同一MySQL实例上的其他数据库。IE: 记住 查询将使用用于建立连接的身份验证凭据来执行
问题内容: 我正在将SQLAlchemy用作python项目的ORM。我创建了很少的模型/架构,并且工作正常。现在,我需要查询现有的MySQL数据库,而不仅仅是select语句,不能插入/更新。 如何围绕该现有数据库的表创建包装器?我已经简短地阅读了sqlalchemy文档和SO,但是找不到任何相关的内容。所有人都建议执行方法,在这里我需要编写原始sql查询,而我想以与使用SA模型相同的方式使用S
问题内容: 我用来从表中获取数据。现在,从称为的表中获取所有记录正在按预期方式工作。 现在,我希望对多个列执行查询,如下所示: 但这给LIKE带来了错误。我怎样才能做到这一点? 问题答案: 请像运营商一样使用 http://docs.sqlalchemy.org/en/rel_0_9/core/sqlelement.html#sqlalchemy.sql.operators.ColumnOpera
我需要从表中选择所有的vip并按兰德排序,然后添加按日期排序的其他数据。在第一个子查询中,一切正常,但在第二个子查询中,spa_date DESC不起作用。我知道UNION子查询中的ORDER BY子句会被忽略而没有限制(但ORDER BY rand()起作用),但我需要所有查询(1+2)中的限制,而不是子查询中的限制 问题: 我需要选择spa_vip=1的所有spa_id并按RAND()排序,然
问题内容: 我们有以下关系: 一个人可以有许多电子邮件地址 电子邮件服务提供商可以(显然)可以提供多个电子邮件地址 因此,这是多对多的关系。我有三个表:电子邮件,提供者和用户。电子邮件具有两个外部ID,分别用于提供商和用户。 现在,给定一个特定的人,我想打印所有电子邮件提供者及其为该人托管的电子邮件地址(如果存在)。(如果该人在Gmail上没有电子邮件,我仍然希望在结果中使用Gmail。我相信否则