首先,抱歉,如果我没有在正确的地方写作,或者我没有提供足够的有关该问题的信息。
使用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
以下是点数要求
请注意,相同的代码在Windows上没有问题。
答案 0 :(得分:0)
我尝试使用 pymmsql ,它没有问题。问题发生在 pyodbc 上,可能在Linux上 ms sql odbc驱动程序仍有问题。