【问题标题】:Connect to SQL Server and run query as "passthrough" from Python连接到 SQL Server 并从 Python 以“直通”方式运行查询
【发布时间】:2020-06-27 17:34:48
【问题描述】:

我目前有对存储在 SQL Server 数据库中的数据执行查询的代码,例如:

import pyodbc
conn = pyodbc.connect(
    r'DRIVER={SQL Server};'
    r'SERVER=SQL2SRVR;'
    r'DATABASE=DBO732;'
    r'Trusted_Connection=yes;'
    )

sqlstr = '''
    SELECT Company, Street_Address, City, State
    FROM F556
    WHERE [assume complicated criteria statement here]
'''

crsr = conn.cursor()
for row in crsr.execute(sqlstr):
    print(row.Company, row.Street_Address, row.City, row.State)

我无法在网上找到有关 pyodbc 是否可以(或默认情况下)在 SQL Server 上运行我的查询(作为直通查询)的文档,或者是否(如果 pyodbc 不能这样做)还有另一种方式(也许sqlalchemy 或类似的?)这样做。有什么见解吗?

或者有没有办法直接从 Pandas 执行直通查询?

【问题讨论】:

    标签: python sql-server pandas sqlalchemy pyodbc


    【解决方案1】:

    如果您正在使用 pandas 和 SQL Server,那么您应该已经创建了一个 SQLAlchemy Engine 对象(通常命名为 engine)。要执行原始 DML 语句,您可以使用构造

    with engine.begin() as conn:
        conn.execute("UPDATE table_name SET column_name ...")
    print("table updated")
    

    【讨论】:

    • 谢谢,尽管您是否声称这种方法是否会导致直通查询,但我无法从您提出的答案中看出这一点。换句话说,如果我使用一堆条件执行 Select 查询,那么该条件在哪里评估(在服务器上,还是在我的本地计算机上)?
    • 如果您使用参数化的 SELECT 查询(可能使用 pandas 的read_sql_query),则查询文本和参数值将发送到服务器,在那里进行评估,然后将结果返回到 DataFrame。
    猜你喜欢
    • 2013-10-03
    • 2016-03-25
    • 1970-01-01
    • 2020-04-05
    • 2016-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多