连接字符串和查询工作的SqlAlchemy,但不是记录。

问题描述 投票:2回答:1

既然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()
python sqlalchemy record
1个回答
0
投票

试试把

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

改成:

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

虽然这对大记录集不是很实用,但这是我唯一能让它工作的方法(或者我得到和你一样的错误)。

© www.soinside.com 2019 - 2024. All rights reserved.