[英]Python script can't execute SQL Select statement
我正在嘗試執行來自 Microsoft SQL 服務器的 SQL SELECT 語句,並將該數據寫入 SQL 服務器並將該數據寫入 Z96607C902EZD2BB86607C902ED4D2 電子表格。
但是,每當我執行 Python 腳本時,我都會收到此錯誤:
Traceback (most recent call last):
File "C:\Users\rrw\AppData\Roaming\Python\Python310\site-packages\sqlalchemy\engine\cursor.py", line 955, in fetchone
row = dbapi_cursor.fetchone()
pyodbc.Error: ('HY010', '[HY010] [Microsoft][ODBC Driver 17 for SQL Server]Function sequence error (0) (SQLFetch)')
Traceback (most recent call last):
File "F:\Astro\Python\AstroPy\WriteSQLData.py", line 91, in <module>
for row in rs:
我可以從錯誤中看出,它不喜歡腳本末尾的行: for row in rs
。 但我不知道為什么。
有什么我想念的嗎?
這是我的腳本:
from sqlalchemy import create_engine
from sqlalchemy.engine import URL
import pyodbc
import pandas as pd
import csv
import configparser
# Get data from configuration ini file
config = configparser.ConfigParser()
config.read('databaseConfig.ini')
destinationFile = config['destination']['fileName']
# Database Connection Code
connection_string = "DRIVER={ODBC Driver 17 for SQL Server};SERVER=ASTROLAB;DATABASE=AstronomyMaps;UID=xyz;PWD=xyz"
connection_url = URL.create(
"mssql+pyodbc", query={"odbc_connect": connection_string})
engine = create_engine(connection_url)
# Simple test query
qry = "SELECT TOP (1000) * FROM [AstronomyMaps].[dbo].[starMapA]"
with engine.connect() as con:
rs = con.execute(qry)
# Write query data to Excel spreadsheet
with open(destinationFile, 'w', newline='') as f:
a = csv.writer(f, delimiter=',')
a.writerow([x[0] for x in cursor.description])
a.writerows(row)
for row in rs:
print(row)
當您退出上下文管理器( with
塊)時,該語句已執行但尚未檢索到行。 但是,退出上下文管理器也會“終止”連接,因此for row in rs:
當 ODBC 驅動程序嘗試調用SQLFetch
時會引發錯誤。
您可以通過使用.all()
在with
塊中檢索行來避免錯誤:
with engine.connect() as con:
rs = con.execute(qry).all()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.