Python 如何在RHEL-like Docker映像中更新FreeTDS驱动程序?
我正在使用pyodbc将一些表情数据从postgres数据库对象传递到SQL Server 2016 5号线有我使用的freeTDS驱动程序Python 如何在RHEL-like Docker映像中更新FreeTDS驱动程序?,python,sql-server,pyodbc,freetds,Python,Sql Server,Pyodbc,Freetds,我正在使用pyodbc将一些表情数据从postgres数据库对象传递到SQL Server 2016 5号线有我使用的freeTDS驱动程序 def __insert_records(self, rows, target_fields): try: mssql_connection = BaseHook.get_connection(self.mssql_conn_id) connection = pyodbc.con
def __insert_records(self, rows, target_fields):
try:
mssql_connection = BaseHook.get_connection(self.mssql_conn_id)
connection = pyodbc.connect(DRIVER='FreeTDS',host=mssql_connection.host,DATABASE=mssql_connection.schema,user=mssql_connection.login,password=mssql_connection.password,ClientCharset='utf-8',port=mssql_connection.port,driver='/usr/lib64/libtdsodbc.so')
cursor = connection.cursor()
for i, row in enumerate(rows, 1):
record = []
for cell in row:
record.append(self._serialize_cell(cell))
record_dictionary = self.__get_record_dictionary(record, target_fields)
cursor.execute(self.__generate_insert_sql_statement(record_dictionary))
connection.commit()
cursor.close()
connection.close()
except pyodbc.ProgrammingError as programmingError:
sqlstate = programmingError.args[0]
if sqlstate = '42000':
print(programmingError.args[0])
我需要更新驱动程序(freeTDS),以便在插入emojis(related:)时避开一个bug
更新:在访问docker映像中的CLI后,我运行tsql-C以获取编译时设置:
Version: freetds v1.1.20
显然,Dockerfile已经具备了安装pyodbc所需的命令。因此,您的容器应该已经具有
- gcc-c++
- 蟒蛇3
- unixODBC-devel
curlhttps://www.freetds.org/files/stable/freetds-1.2.18.tar.gz >freetds-1.2.18.tar.gz
tar-xvzf freetds-1.2.18.tar.gz
cd freetds-1.2.18/
/配置
制作
sudo制作安装
echo“| sudo tee-a/etc/odbcinst.ini>/dev/null
echo“[FreeTDS_1.2.18]”sudo tee-a/etc/odbcinst.ini>/dev/null
echo“Driver=/usr/local/lib/libtdsodbc.so”| sudo tee-a/etc/odbcinst.ini>/dev/null
然后您应该能够创建pyodbc连接,如下所示:
导入pyodbc
>>>cnxn=pyodbc.connect(“DRIVER=FreeTDS_1.2.18;SERVER=192.168.0.179;PORT=49242;UID=sa;PWD=u)
>>>打印(cnxn.execute(“选择@@VERSION”).fetchval()
Microsoft SQL Server 2017(RTM-GDR)(KB4583456)-14.0.2037.2(X64)
2020年11月2日19:19:59
版权所有(C)2017微软公司
Windows 8.1 Pro 6.3(版本9600:)上的快速版(64位)
>>>打印(cnxn.getinfo(pyodbc.SQL\u驱动程序\u名称))
libtdsodbc.so
>>>打印(cnxn.getinfo(pyodbc.SQL\u驱动程序版本))
01.02.0018
您使用的是什么风格的Linux?Debian…?瑞尔@GordThompson我正在使用Docker,我应该将dockerfile代码添加到此文件中吗?它在中使用带有freeTDS的yum命令it@GordThompson进入docker映像的CLI后,我运行tsql-C以获取编译时设置。我正在使用FreeTDSV1.1.20,这是否仍然会导致驱动程序截断问题?显然是这样。表示版本1.1.23中包含该修复程序。