首页 文章

Python SQLAlchemy - 错误IM001反映表

提问于
浏览
0

首先,对不起,如果我不是在正确的地方写作,或者我没有提供有关该问题的足够信息 .

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

DBAPIError:(pyodbc.Error)('IM001','[IM001] [unixODBC] [Driver Manager]驱动程序不支持此功能(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(最大值))和[COLUMNS_1] . [TABLE_SCHEMA] = CAST(?AS NVARCHAR(最大值))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

    我尝试使用 pymmsql 并且没有问题 . 问题出在pyodbc上,也许它仍然有一些问题 ms sql odbc drivers on Linux .

相关问题