Python SQLAlchemy - 错误IM001反映表

时间:2016-07-18 14:56:00

标签: python sql-server sqlalchemy pyodbc

首先,抱歉,如果我没有在正确的地方写作,或者我没有提供足够的有关该问题的信息。

使用SQL Alchemy和pyodbc。我正试图反映一张桌子。 当我尝试这样做时,我收到了这条消息

  

DBAPIError:(pyodbc.Error)('IM001','[IM001] [unixODBC] [Driver   管理器]驱动程序不支持此功能(0)(SQLNumParams)')   [SQL:你的[COLUMNS_1]。[TABLE_SCHEMA],[COLUMNS_1]。[TABLE_NAME],   [COLUMNS_1]。[COLUMN_NAME],[COLUMNS_1]。[IS_NULLABLE],   [COLUMNS_1]。[DATA_TYPE],[COLUMNS_1]。[ORDINAL_POSITION],   [COLUMNS_1] [CHARACTER_MAXIMUM_LENGTH]   [COLUMNS_1]。[NUMERIC_PRECISION],[COLUMNS_1]。[NUMERIC_SCALE],   [COLUMNS_1]。[COLUMN_DEFAULT],[COLUMNS_1]。[COLLATION_NAME] \ nFROM   [INFORMATION_SCHEMA]。[COLUMNS] AS [COLUMNS_1] \ nWHERE   [COLUMNS_1]。[TABLE_NAME] = CAST(?AS NVARCHAR(最大))AND   [COLUMNS_1]。[TABLE_SCHEMA] = CAST(?AS NVARCHAR(max))ORDER BY   [COLUMNS_1]。[ORDINAL_POSITION]'] [参数:('Order','dbo')]

这是代码..

>>> from sqlalchemy.orm.session import Session
>>> from sqlalchemy.schema import MetaData
>>> import sqlalchemy as SQLA
>>> eng = SQLA.create_engine(connection_string)
>>> session = Session(eng.connect())
>>> class DB:
...     pass
... 
>>> db = DB()
>>> db.session = session
>>> db.engine = eng
>>> db.metadata = MetaData(bind=db.engine, schema='dbo')
>>> db.session.execute("select * from information_schema.columns")
<sqlalchemy.engine.result.ResultProxy object at 0x7f76eb770890>
>>> t = SQLA.Table('Order', db.metadata, autoload=True, extend_existing=True, autoload_with=db.engine)
>>> Traceback (most recent call last):
...   File "<stdin>", line 1, in <module> ... See the error above

代码在RHEL 7.x上运行,其中包含用于Linux的unixODBC,Microsoft SQL Server Native clinet 11。 Python 2.7.11

以下是点数要求

  • 点击(6.6)db-connection-maker(1.2.0)
  • 烧瓶(0.11.1)
  • itsdangerous(0.24)
  • Jinja2(2.8)
  • MarkupSafe(0.23)
  • pip(8.0.2)
  • pyaml(15.8.2)
  • pyodbc(3.0.10)
  • PyYAML(3.11)
  • setuptools(19.6.2)
  • simplejson(3.8.2)
  • SQLAlchemy(1.0.14)
  • Werkzeug(0.11.10)

请注意,相同的代码在Windows上没有问题。

1 个答案:

答案 0 :(得分:0)

我尝试使用 pymmsql ,它没有问题。问题发生在 pyodbc 上,可能在Linux上 ms sql odbc驱动程序仍有问题