重要更改:
以下命令也有效,并为我提供正确的提示。然后必须存在pymssql的问题。
var lookup = db.Requirements.ToLookup(r => r.ID, r => r.Priority);
var priority = lookup[rowID].FirstOrDefault();
所以我和我的pymssql和freetds司机打架。
平台版本等:
Ubuntu 16.04
FreeTDS v0.91(由工作tsql使用)
FreeTDS v0.95(由pymssql使用)
pymssql v2.1.3
目标数据库:SQL Azure(最新)
安装说明:https://azure.microsoft.com/en-us/documentation/articles/sql-database-develop-python-simple/
我已经进入了每个freetds.conf文件,我可以找到:/etc/freetds/freetds.conf; /root/.freetds.conf
我已将全局TDS版本设置为8.0。我已经从我的pymssql.connect中的python透视图覆盖了将版本覆盖到8.0
sudo TDSVER=7.1 tsql -H asdf.database.windows.net -p 1433 -U adf@ad -P adsf#adf -D adf
我运行诊断工具:
tsql -C并返回4.2作为版本
我运行代码将日志转储到stdout,注意,版本是7.1。
net.c:202:连接到191.238.6.43端口1433(TDS版本7.1)
以下tsql命令对我有用......
import os
os.environ['TDSDUMP'] = 'stdout'
import pymssql
conn = pymssql.connect(server='adsf.database.windows.net',
user='asdf@adfs',
password='asdf#adfad',
database='asdd',
tds_version='8.0',
)
注意版本号。它的8.0。我可以验证我得到的数据,并可以做我想要的所有。
所以这里有一个明显的问题,就是pymssql如何与freetds挂钩。
以下是日志转储的所有输出,以防有人看到我无法正常的事情......
sudo TDSVER=8.0 tsql -H asdf.database.windows.net -p 1433 -U adf@ad -P adsf#adf -D adf
答案 0 :(得分:2)
不幸的是你没有告诉我们:
如果您正在尝试使用TDS 8.0并且看到pymssql + FreeTDS正在使用7.1那么您
a)不必担心因为它们是同一个东西。见http://www.freetds.org/userguide/choosingtdsprotocol.htm#AEN910
b)实际使用"7.1"
,因为FreeTDS 1.0不赞成使用"8.0"
。见https://github.com/FreeTDS/freetds/blob/1855d0f72aadd998ab133208fcd3f4d168074ab5/NEWS#L6-L7
答案 1 :(得分:0)
似乎freetds v0.95与Ubuntu 16.04不兼容,也不是pymssql的最新版本,因为它附带v0.95并且看起来你可以做很多事情来交换它使用的版本进行。
我可以通过以下方式让这个工作:
sudo apt-get install freetds-dev freetds-bin
sudo pip3 install pymssql=2.1.1
另请注意,它不适用于Anaconda Interpreter。我只测试了Anaconda Interpreter和标准的CPython解释器。