【发布时间】:2017-12-11 16:50:20
【问题描述】:
我正在尝试使用 Python 作为我在树莓派 Pi3 上的脚本语言来查询 MSSQL Server 2012。
我需要创建一个应用程序来查询 MSSQL 服务器并返回一些需要在 H.M.I. 上显示的值。我选择了树莓派平台,使用 Python 作为编程语言来开发这个解决方案。我在 Windows 7 PC 上使用 PyCharm 创建了脚本,一切运行良好。当我将它移到 Raspberry 平台时,它不起作用。
我正在使用 pyODBC 进行连接和查询,并使用 FreeTDS 作为驱动程序。我使用以下过程进行设置:
sudo apt-get install freetds-dev freetds-bin unixodbc-dev tdsodbc
pip3 install pyODBC
配置/etc/freetds.conf文件如下
[NAME]
host = ipAddress
port = 1433
tds version = 7.4
instance = dbInstanceName
然后我转到命令行并测试连接:tsql -S NAME -U username。然后命令行提示Password:,所以我输入了密码,我得到了以下信息:
locale is "enGB.UTF-8"
locale charset is "UTF-8"
using default charset "UTF-8"
1>
由于没有错误,我只能假设这有效?
然后我如下设置 /etc/odbcinst.ini 文件:
[FreeTDS]
Driver = /usr/lib/arm-linux-gnueabihf/odbc/libtdsodbc.so
然后我如下设置 /etc/odbc.ini 文件:
[NAME1]
Driver = /usr/lib/arm-linux-gnueabihf/odbc/libtdsodbc.so
Description = MSSQL Server
Trace = No
Server = ipAddress
Database = dbName
Port = 1433
TDS_Version = 7.4
然后我在命令行中使用 isql 函数对此进行了测试:isql NAME1 user password 并得到以下提示:
+-------------------------------------------------+
| Connected!
|
| sql-statement
| help [tablename]
| quit
|
+-------------------------------------------------+
SQL>
所以我输入了select getDate() 并返回了日期和时间。
但是在 Python 中我仍然无法建立连接,我在解释器中输入了以下内容:
import pyodbc
conn = pyodbc.connect('DRIVER=FreeTDS;SERVER=NAME;DATABASE=dbName;UID=user;PWD=password')
然后当我输入 cu = conn.cursor() 时,我得到一个错误:
AttributeError: 'NoneType' object has no attribute cursor
【问题讨论】:
-
您是否为连接成功设置了 NAME、dbName、用户和密码值?提示:gist.github.com/rduplain/1293636#file-hello_pyodbc-py
-
另外请注意,connect函数获取单个字符串作为参数。
-
您好 BoboDarph,谢谢您的回复,我确实将用户名和密码设置为真实值。
标签: python sql-server raspberry-pi pyodbc freetds