0

我在 Azure Data Studio 中操作 python 3 笔记本(类似于 jupyter notebook)并尝试通过 pyodbc 访问现有的全局临时表(##TEMP1)。

这是我的代码:

import pandas as pd
import pyodbc

con = pyodbc.connect(
    Trusted_Connection="yes",
    driver="{ODBC Driver 17 for SQL Server}",
    host="SERVERNAME",
    database=db,
    trustServerCertificate="yes",
    multisubnetfailover="yes",
    applicationIntent="ReadOnly",
)

sql = """
select * from ##TEMP1
"""

data = pd.read_sql(sql, con)

con.close()
data.head()

在 Azure Data Studio 中,当我将内核切换到 sql 并简单地从 ##TEMP1 查询 select * 时,它会返回结果,但是当我尝试通过 pyodbc 通过上面的 python 代码运行时,它会返回以下错误。

DatabaseError: 执行失败 sql ' select * from ##TEMP1 ': ('####', "[####] [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Invalid object name '# #TEMP1'。(###) (SQLExecDirectW)")

请帮助,那些比我聪明得多的人!:)

4

1 回答 1

0

我想你想要这样的东西:

我使用 pyodbc 建立连接并查询数据库。如您所见,我使用 pyodbc 创建了一个光标,并使用 SQL 查询字符串作为参数执行光标。然后用于fetchall()返回游标的结果

import pandas as pd
import pyodbc
con = pyodbc.connect(Trusted_Connection='yes', driver = '{ODBC Driver 17 for SQL Server}',host = 'SERVERNAME', database = db,trustServerCertificate='yes',multisubnetfailover='yes',applicationIntent='ReadOnly')

crsr = conn.cursor()

sql = '''
select * from ##TEMP1
'''

crsr.execute(sql)

results = crsr.fetchall()

con.close()
data.head()
于 2019-10-17T13:59:57.260 回答