无法使用FreeTDS和ODBC(raspberry pi raspbian)连接到SQL Server

时间:2018-11-22 02:27:42

标签: sql-server tsql raspbian pyodbc freetds

将Raspberry Pi与Raspbian 9结合使用,我试图通过ODBC(从外壳通过点子安装)和FreeTDS(108版)连接到Azure SQL数据库

到目前为止,我已经尝试了以下方法:

/etc/odbcinst.ini中:

[FreeTDS]
Description=FreeTDS Driver
Driver=/usr/lib/odbc/libtdsodbc.so
Setup=/usr/lib/odbc/libtdsS.so

在我的/etc/odbc.ini

[name]
 Driver=FreeTDS
 ServerName = {MyServerString from Azure MS-SQL}
 Database = {My database name from Azure MSQ-SQL}
 TDS_Version = auto

FreeTDS.config文件中:

创建了该代码块:

[name]
 host = {MyServerString from Azure MSQ SQL}
 port = 1433
 tds version = auto

当我运行以下命令时:

tsql -S {name} -U {my_username} -P {my_password}

我得到结果

No errors ( 1> )

所以我相信我已经连接到数据库了。

但是,当我运行我的Python代码时。我得到一个错误。我的数据库连接块在下面

#Database setup
conDEBUG = "DRIVER={FreeTDS};Database={MyDGName};SERVER=tcp:{MyDB}.database.windows.net;UID={myUID};PWD={myPWD}"
conDEBUG = urllib.parse.quote_plus(conDEBUG)
conDEBUG = "mssql+pyodbc:///?odbc_connect=%s" % conDEBUG
app.config['SQLALCHEMY_DATABASE_URI'] = conDEBUG
db = SQLAlchemy(app)

我还尝试将'TDS_Version = auto'添加到conDEBUG字符串中,但这也不起作用。

我遇到的具体错误:

  

(''08001','[08001] [unixODBC] [FreeTDS] [SQL Server]无法连接到数据源(0)(SQLDriverConnect)')

1 个答案:

答案 0 :(得分:0)

这是我用于通过SQLAlchemy通过pyodbc连接到SQL Server的功能:

def mssql_connect(con_string): 
    """ Connects to the specified db via ODBC. """
    def connect():
        return pyodbc.connect(con_string, autocommit=True)

    db = create_engine('mssql://', creator=connect, encoding='cp1252')
    db.echo = False

    return db

mssql_connect("DRIVER={FreeTDS};SERVER={MyDB}.database.windows.net;PORT=1433;DATABASE={dbname};UID={myUID};PWD={myPWD};TDS_Version=7.3;")

根据FreeTDS的版本,您可能必须将TDS_Version=7.3替换为TDS_Version=7.2TDS_Version=7.1。祝你好运!