Python 尚不支持ODBC SQL类型-155
我按照这个查询Azure数据库Python 尚不支持ODBC SQL类型-155,python,sql-server,azure-sql-database,pyodbc,Python,Sql Server,Azure Sql Database,Pyodbc,我按照这个查询Azure数据库 import pyodbc server = 'your_server.database.windows.net' database = 'your_database' username = 'your_username' password = 'your_password' driver= '{ODBC Driver 13 for SQL Server}' cnxn = pyodbc.connect('DRIVER='+driver+';PORT=1433;SE
import pyodbc
server = 'your_server.database.windows.net'
database = 'your_database'
username = 'your_username'
password = 'your_password'
driver= '{ODBC Driver 13 for SQL Server}'
cnxn = pyodbc.connect('DRIVER='+driver+';PORT=1433;SERVER='+server+';PORT=1443;DATABASE='+database+';UID='+username+';PWD='+ password)
cursor = cnxn.cursor()
cursor.execute("SELECT * FROM FinancialRecord where deleted=0")
row = cursor.fetchone()
while row:
print (str(row[0]) + " " + str(row[1]))
row = cursor.fetchone()
当我运行上面的代码时,它会显示错误
回溯(最近一次呼叫最后一次):
文件“sqltest.py”,第10行,在
row=cursor.fetchone()
pyodbc.ProgrammingError:('ODBC SQL类型-155尚不受支持。列索引=2类型=-155','HY106')
我是Azure的新手。任何人都可以提供帮助?ODBC SQL类型-155对应于SQL Server类型
DatetimeOFFSET
和ODBC类型SQL\SS\u TIMESTAMPOFFSET
。ODBC类型和SQL Server类型之间的映射在本文中进行了描述。错误消息表示Python ODBC API当前不支持此SQL Server数据类型
要解决此问题,您需要更改查询以避免使用DatetimeOFFSET
数据类型查询列。一种方法是识别FinancialRecord
表中具有DatetimeOFFSET
数据类型的列,并将其转换为nvarchar(100)
类型
SELECT CAST(MyColumn as AS nvarchar(100)) AS MyColumnAsNVarChar', ...
FROM FinancialRecord where deleted=0
当数据库返回pyodbc本机不支持的SQL类型时,我们可以使用pyodbc支持。上面链接的Wiki页面上的示例将执行客户端转换,类似于在服务器上转换为[N]VARCHAR所实现的转换:
导入结构
导入pyodbc
conn=pyodbc.connect(“DSN=myDb”)
def handle_datetimeoffset(dto_值):
#参考:https://github.com/mkleehammer/pyodbc/issues/134#issuecomment-281739794
tup=struct.unpack(“稍微简单一点:年、月、日、时、分、秒、纳秒、偏移小时、偏移分钟=struct.unpack(”