Python SQLAlchemy - 错误 IM001 反映 table
Python SQLAlchemy - Error IM001 reflecting table
首先,如果我写错了地方或者我没有提供足够的关于这个问题的信息,我深表歉意。
使用 SQL Alchemy 和 pyodbc。我正在尝试反映 table。
当我尝试这样做时,我收到这条消息
DBAPIError: (pyodbc.Error) ('IM001', '[IM001] [unixODBC][Driver
Manager]Driver does not support this function (0) (SQLNumParams)')
[SQL: u'SELECT [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(max)) AND
[COLUMNS_1].[TABLE_SCHEMA] = CAST(? AS NVARCHAR(max)) ORDER BY
[COLUMNS_1].[ORDINAL_POSITION]'] [parameters: ('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 上的代码是 运行,带有 unixODBC,Microsoft SQL Server Native clinet 11 for Linux。 Python 2.7.11
这是点子要求
- 点击 (6.6) db-connection-maker (1.2.0)
- 烧瓶 (0.11.1)
- 危险 (0.24)
- Jinja2 (2.8)
- 标记安全 (0.23)
- 点 (8.0.2)
- pyaml (15.8.2)
- pyodbc (3.0.10)
- PyYAML (3.11)
- 设置工具 (19.6.2)
- simplejson (3.8.2)
- SQL炼金术 (1.0.14)
- Werkzeug (0.11.10)
请注意,相同的代码在 windows 上运行没有问题。
我尝试使用 pymmsql,它没有问题。问题出在 pyodbc,也许 ms sql odbc 驱动程序在 Linux.
首先,如果我写错了地方或者我没有提供足够的关于这个问题的信息,我深表歉意。
使用 SQL Alchemy 和 pyodbc。我正在尝试反映 table。 当我尝试这样做时,我收到这条消息
DBAPIError: (pyodbc.Error) ('IM001', '[IM001] [unixODBC][Driver Manager]Driver does not support this function (0) (SQLNumParams)') [SQL: u'SELECT [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(max)) AND [COLUMNS_1].[TABLE_SCHEMA] = CAST(? AS NVARCHAR(max)) ORDER BY [COLUMNS_1].[ORDINAL_POSITION]'] [parameters: ('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 上的代码是 运行,带有 unixODBC,Microsoft SQL Server Native clinet 11 for Linux。 Python 2.7.11
这是点子要求
- 点击 (6.6) db-connection-maker (1.2.0)
- 烧瓶 (0.11.1)
- 危险 (0.24)
- Jinja2 (2.8)
- 标记安全 (0.23)
- 点 (8.0.2)
- pyaml (15.8.2)
- pyodbc (3.0.10)
- PyYAML (3.11)
- 设置工具 (19.6.2)
- simplejson (3.8.2)
- SQL炼金术 (1.0.14)
- Werkzeug (0.11.10)
请注意,相同的代码在 windows 上运行没有问题。
我尝试使用 pymmsql,它没有问题。问题出在 pyodbc,也许 ms sql odbc 驱动程序在 Linux.