将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)')
答案 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.2
或TDS_Version=7.1
。祝你好运!