【发布时间】:2019-05-17 21:40:41
【问题描述】:
问题:如何通过 Python 运行 SQL 查询以从可能具有不同 SQL 方言的多台服务器检索数据(例如,其中一种服务器方言使用 TOP X 和另一种样本 X)?
目前我有一些代码可以让我单独对每个服务器运行查询(这是不够的):
import pyodbc
import pandas as pd
cnxn = pyodbc.connect('DSN=dsn_name;UID=username;PWD=password')
query = str("""
SELECT *
FROM sqlserver1.tableA
""")
df = pd.read_sql(query, cnxn)
目标:我想做的是连接来自不同服务器的数据,基本上我希望在 Python 中进行 SQL 查询,看起来有点像这样 - 处理不同的 SQL 方言:
query = str("""
SELECT *
FROM sqlserver1.tableA as sq
INNER JOIN teradataserver2.tableB as tera
ON sq.id = tera.id
""")
..附言我尝试过这样的解决方法:
import pyodbc
import pandas as pd
cnxnServer1 = pyodbc.connect('DSN=dsn_name1;UID=username;PWD=password')
cnxnServer2 = pyodbc.connect('DSN=dsn_name2;UID=username;PWD=password')
queryServer1 = str("""
SELECT *
FROM sqlserver1.tableA
""")
queryServer2 = str("""
SELECT *
FROM teradataserver2.tableB
""")
.. 然后使用 Pandas 合并。但是这太无效了。
注意:我运行 Python 3.7
【问题讨论】:
-
您是否尝试过链接服务器,它允许执行您的目标中提到的查询?
-
不,我没有。如果这样可以实现目标,那么如果您能分享解决方案,我会很高兴。
-
你说的是什么意思,但这太无效了?慢?错误?
标签: python sql-server teradata pyodbc connector