首先,对不起,如果我不是在正确的地方写作,或者我没有提供有关该问题的足够信息 .
使用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 回答
我尝试使用 pymmsql 并且没有问题 . 问题出在pyodbc上,也许它仍然有一些问题 ms sql odbc drivers on Linux .