我正在使用 python 脚本连接到数据库。
from sqlalchemy import text , create_engine
Server = ''
Database = ''
Driver = 'SQL Server'
Database_Con = f'mssql://@{Server}/{Database}?driver={Driver}'
#Create the engine to connect to the database
engine=create_engine(Database_Con)
con = engine.connect()
插入到平面表时会抛出以下错误:
(pyodbc.Error) ('HY104', '[HY104] [Microsoft][ODBC SQL Server Driver]Invalid precision value (0) (SQLBindParameter)')
[SQL: SELECT [INFORMATION_SCHEMA].[TABLES].[TABLE_NAME]
FROM [INFORMATION_SCHEMA].[TABLES]
WHERE ([INFORMATION_SCHEMA].[TABLES].[TABLE_TYPE] = CAST(? AS NVARCHAR(max)) OR [INFORMATION_SCHEMA].[TABLES].[TABLE_TYPE] = CAST(? AS NVARCHAR(max))) AND [INFORMATION_SCHEMA].[TABLES].[TABLE_NAME] = CAST(? AS NVARCHAR(max)) AND [INFORMATION_SCHEMA].[TABLES].[TABLE_SCHEMA] = CAST(? AS NVARCHAR(max))]
[parameters: ('BASE TABLE', 'VIEW', '', 'dbo')]
(Background on this error at: https://sqlalche.me/e/20/dbapi)
如果我修改驱动程序,它就可以正常工作。我无法选择在服务器上升级或安装驱动程序。我尝试将数据类型从 varchar(max) 修改为 varchar(4000)。此外,平面表还具有日期时间列。
请问对错误有什么见解吗?
问题中引用的查询是由 SQLAlchemy 生成的。它检查[INFORMATION_SCHEMA].[TABLES]
查看特定表是否存在。
当使用 Windows 附带的古老的“SQL Server”ODBC 驱动程序 (SQLSRV32.DLL) 时,该查询会失败。该驱动程序可以追溯到 SQL Server 2000 时代,并且已被弃用很多年。该查询适用于更新版本的 ODBC 驱动程序,例如“ODBC Driver 17 for SQL Server”。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)