Python 尚不支持ODBC SQL类型-155

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

我按照这个查询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;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(”