我在Windows10(主机操作系统)和CentOS docker映像中安装了pyodbc。
在Windows10中,它按预期工作,但是在Docker映像上引发错误。
update raport_luna r
set in_Arbeit_ohne_at = (select s.seq from sqlite_sequence s where s.name = r.user)
where exists (select 1 from sqlite_sequence s where s.name = r.user)
ValueError: month must be in 1..12
Windows 10:主机操作系统
python3.7.4
pyodbc4.0.27
CentOS7:泊坞窗映像
python3.6.8
pyodbc4.0.30
这是我的dockerfile,
import pyodbc
conn = pyodbc.connect('DSN=db2; UID=myid; PWD=mypwd')
cursor = conn.cursor()
cursor.execute('select * from mydb.atable')
rows = cursor.fetchall()
我会错过在centos上安装任何开发工具吗?
答案 0 :(得分:1)
在没有docker的另一个Linux上,我遇到了同样的问题。相同的Python版本,相同的pyodbc版本。使用pyodbc 3.0.10也会发生这种情况。
数据库:Sybase ASE,操作系统:Red Hat Enterprise Linux Server 7.8(Maipo)
如果您的结果集中包含时间戳,请尝试以下操作:
一位同事创建了此补丁,但现在想保持匿名。 https://github.com/pucgenie/pyodbc/pull/1
基本上,向驱动程序提供了指向SQLLEN的指针,然后仅填充了32位。 pyodbc无法检测到(-1)而不是(2 ^ 32 -1)。该补丁为0x00000000FFFFFFFFFF添加了一个难看的异常处理。