CM-*_*Dev 7 python sql-server pyodbc pypyodbc
我有一个Python程序,使用ODBC连接连接到MSSQL数据库.我正在使用的Python库是pypyodbc.
这是我的设置:
我遇到的问题是,当我查询带有varchar(max)列的表时,内容被截断.
我是pypyodbc的新手,我一直在疯狂地搜索,并且找不到任何关于如何防止在pypyodbc甚至pyodbc中发生这种情况的事情.至少没有我一直在使用的搜索词,我不知道还有什么其他的短语可以尝试.
我甚至尝试添加SET TEXTSIZE 2147483647;到我的SQL查询,但数据仍然被截断.
我该如何防止这种情况发生?或者,你能指出我正确的方向吗?
更新:
所以,我尝试在我的SQL查询中执行强制转换.当我这样做CAST(my_column as VARCHAR(MAX))时截断在相同的位置.但是,如果我这样做CAST(my_column as VARCHAR(8000))会给我一个更大的文本集,但它仍然会截断一些内容.如果我尝试做任何比8000我更大的错误,说8000我是最大的,我可以使用.有人知道这里会发生什么吗?使用MAX不起作用似乎很奇怪.
CM-*_*Dev 11
好吧,我最终解决了问题.我找到了关于类似问题的链接,只是没有在python中,他们发现问题出在SQL Server本机客户端驱动程序上.他们建议使用SQL Server标准驱动程序.
所以我改变了我的司机在我的ODBC连接字符串来自SQL Server Native Client 11.0于SQL Server它的工作完美!我在MSSQL数据表中获取VARCHAR(MAX)列的全部内容.
我真的希望这证明对遇到这个问题的任何人都有用!祝好运!
这是链接:http: //www.sqlservercentral.com/Forums/Topic1534163-391-1.aspx
小智 5
在我的情况下,“ {SQL Server}”不起作用。如果数据库位于我的本地计算机上,则“ {SQL Server}”可以很好地工作。但是,如果我尝试连接到远程服务器,则始终会返回以下错误消息:
pypyodbc.DatabaseError :(“ 08001”,“ [08001] [Microsoft] [ODBC SQL Server驱动程序] [DBNETLIB] SSL安全性错误”)
对于仍在VARCHAR(MAX)截断中挣扎的那些人,我的同事提出的一个出色的解决方法是将VARCHAR(MAX)转换为TEXT类型。
假设我们有一个名为note的列,其数据类型为VARCHAR(MAX),而不是使用SELECT note FROM notebook编写SELECT CAST(note AS TEXT) FROM notebook。
希望能帮助到你!
| 归档时间: |
|
| 查看次数: |
2849 次 |
| 最近记录: |