pyodbc - OPENQUERY 支持?
pyodbc - OPENQUERY support?
Python版本:3.7.4
PyODBC 版本:4.0.26-cp37
我正在尝试连接到 Microsoft SQL 服务器。我正在使用以下代码并且能够使用标准查询来查询数据库:
示例 1:
cnxn = pyodbc.connect("Driver={SQL Server Native Client 11.0};"
"Server=SERVER-A;"
"Database=DATABASE-A;"
"uid=xxx,pwd=yyy")
df = pd.read_sql_query('SELECT * FROM DATABASE-A.dbo.XXX')
但是我需要执行的查询是:
SELECT * FROM OPENQUERY(SERVER-B, SELECT DateTime = convert(nvarchar, DateTime, 21), item1,item2,item3 FROM TableY')
我收到 "Execution failed on sql 42000" 错误代码 & "Could not find stored procedure 'SQL' 2812"。
以上打开的查询在 SQL Server Management Studio 中有效。
我不确定错误是由于字符串语法还是库不支持打开的查询。
是的,pyodbc 确实支持 OPENQUERY。以下对我来说很好用:
print('Info: Python version ' + sys.version)
# Info: Python version 3.7.3 (v3.7.3:ef4ec6ed12, Mar 25 2019, 21:26:53) [MSC v.1916 32 bit (Intel)]
print('Info: pyodbc version ' + pyodbc.version)
# Info: pyodbc version 4.0.26
connection_string = 'DRIVER=ODBC Driver 17 for SQL Server;SERVER=(local)\SQLEXPRESS;DATABASE=myDb;Trusted_Connection=yes;UseFMTONLY=Yes;'
cnxn = pyodbc.connect(connection_string, autocommit=True)
crsr = cnxn.cursor()
sql = "SELECT * FROM OPENQUERY([SERVER-B], 'SELECT item1,item2,item3 FROM TableY')"
print(crsr.execute(sql).fetchall())
# [(1, 'HoHoHo', datetime.datetime(2019, 12, 25, 0, 0))]
Python版本:3.7.4
PyODBC 版本:4.0.26-cp37
我正在尝试连接到 Microsoft SQL 服务器。我正在使用以下代码并且能够使用标准查询来查询数据库:
示例 1:
cnxn = pyodbc.connect("Driver={SQL Server Native Client 11.0};"
"Server=SERVER-A;"
"Database=DATABASE-A;"
"uid=xxx,pwd=yyy")
df = pd.read_sql_query('SELECT * FROM DATABASE-A.dbo.XXX')
但是我需要执行的查询是:
SELECT * FROM OPENQUERY(SERVER-B, SELECT DateTime = convert(nvarchar, DateTime, 21), item1,item2,item3 FROM TableY')
我收到 "Execution failed on sql 42000" 错误代码 & "Could not find stored procedure 'SQL' 2812"。
以上打开的查询在 SQL Server Management Studio 中有效。
我不确定错误是由于字符串语法还是库不支持打开的查询。
是的,pyodbc 确实支持 OPENQUERY。以下对我来说很好用:
print('Info: Python version ' + sys.version)
# Info: Python version 3.7.3 (v3.7.3:ef4ec6ed12, Mar 25 2019, 21:26:53) [MSC v.1916 32 bit (Intel)]
print('Info: pyodbc version ' + pyodbc.version)
# Info: pyodbc version 4.0.26
connection_string = 'DRIVER=ODBC Driver 17 for SQL Server;SERVER=(local)\SQLEXPRESS;DATABASE=myDb;Trusted_Connection=yes;UseFMTONLY=Yes;'
cnxn = pyodbc.connect(connection_string, autocommit=True)
crsr = cnxn.cursor()
sql = "SELECT * FROM OPENQUERY([SERVER-B], 'SELECT item1,item2,item3 FROM TableY')"
print(crsr.execute(sql).fetchall())
# [(1, 'HoHoHo', datetime.datetime(2019, 12, 25, 0, 0))]