【问题标题】:Cannot to connect to SQL Server using FreeTDS and ODBC (raspberry pi raspbian)无法使用 FreeTDS 和 ODBC (raspberry pi raspbian) 连接到 SQL Server
【发布时间】:2019-04-24 16:07:30
【问题描述】:

使用带有 Raspbian 9 的 Raspberry Pi,我正在尝试使用带有 FreeTDS(版本 108)的 ODBC(pip 从 shell 安装它)连接到 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)')

【问题讨论】:

  • 尝试从SERVER=tcp:{MyDB}.database.windows.net 中删除tcp:protocol:servername 受 Microsoft 的 SQL Server ODBC 驱动程序支持,但不受 FreeTDS ODBC 支持。
  • 试过了。没有成功..同样的错误

标签: sql-server tsql raspbian pyodbc freetds


【解决方案1】:

这是我用于通过 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。祝你好运!

【讨论】:

    猜你喜欢
    • 2019-02-09
    • 2019-12-12
    • 2016-09-29
    • 2012-08-28
    • 1970-01-01
    • 1970-01-01
    • 2016-07-16
    • 2016-04-25
    • 2016-03-13
    相关资源
    最近更新 更多