连接字符串和查询适用于SqlAlchemy,但不适用于记录

时间:2019-06-16 20:06:35

标签: python sqlalchemy record

由于记录只是SqlAlchemy的一个薄包装,为什么这不起作用?从同一数据库运行同一查询的两种方式都使用完全相同的连接字符串和查询。是什么赋予了?我从print(row)看到的错误抛出sqlalchemy.exc.DBAPIError:(pyodbc.Error)('HY010','[HY010] [Microsoft] [SQL Server的ODBC驱动程序17]功能序列错误(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()

1 个答案:

答案 0 :(得分:0)

尝试更改:

  rows = db.query('select * from mysmalltable')

收件人:

  rows = db.query('select * from mysmalltable', fetchall=True)

尽管对于大型记录集来说这不是很实际,但这是我可以使其正常工作的唯一方法(或者我遇到与您相同的错误)。