既然records只是SqlAlchemy的一个薄薄的包装,为什么不能用? 从同一个数据库中运行同一个查询的两种方式都使用了完全相同的连接字符串和查询。 到底是什么原因? 我从print(row)看到的错误是throws sqlalchemy.exc.DBAPIError: (pyodbc.Error)('HY010', '[HY010] [Microsoft][ODBC Driver 17 for SQL Server]Function sequence error (0) (SQLFetch)')
import pyodbc
conn_str = (
r'Driver={ODBC Driver 17 for SQL Server};'
r'Server=server;'
r'Database=database;'
r'Trusted_Connection=yes;'
)
import urllib
from sqlalchemy import create_engine
pp = 'mssql+pyodbc:///?odbc_connect{}'.format(urllib.parse.quote_plus(conn_str))
engine = create_engine(pp)
cnxn = engine.connect()
rows = cnxn.execute('select * from mysmalltable').fetchall()
print(rows)
cnxn.close()
import records
db = records.Database(pp)
rows = db.query('select * from mysmalltable')
for row in rows:
print(row) #throws sqlalchemy.exc.DBAPIError: (pyodbc.Error) ('HY010', '[HY010] [Microsoft][ODBC Driver 17 for SQL Server]Function sequence error (0) (SQLFetch)')
db.close()
试试把
rows = db.query('select * from mysmalltable')
改成:
rows = db.query('select * from mysmalltable', fetchall=True)
虽然这对大记录集不是很实用,但这是我唯一能让它工作的方法(或者我得到和你一样的错误)。