无法将带有 pyodbc 的 Sqlalchemy 连接到 SQL Server 2000

Can't connect Sqlalchemy with pyodbc to SQL Server 2000

提问人:T_Ner 提问时间:3/23/2022 更新时间:3/24/2022 访问量:784

问:

通过安装

Install:
sudo apt-get install freetds-dev freetds-bin unixodbc-dev tdsodbc
pip install pyodbc sqlalchemy
In /etc/odbcinst.ini:

[FreeTDS]
Description=FreeTDS Driver
Driver=/usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so
Setup=/usr/lib/x86_64-linux-gnu/odbc/libtdsS.so

安装后,我尝试了此代码并且它起作用了,它打印了表 2 中的所有记录

import pyodbc

conn = pyodbc.connect('DRIVER=FreeTDS;SERVER=<IP_OR_HOSTNAME>;PORT=1433;DATABASE=<DATABASE_NAME>;UID=<USERNAME>;PWD=<PASSWORD>;TDS_Version=8.0;')
cursor = conn.cursor()
for row in cursor.execute('SELECT * FROM Table2'):
    print (row)

但是,我想将 SQLAlchemy 与 pyodbc 一起使用,但它不起作用

import urllib

from sqlalchemy import create_engine


engine = create_engine('mssql+pyodbc:///?odbc_connect=' +
    urllib.parse.quote_plus('DRIVER=FreeTDS;SERVER=<IP_OR_HOSTNAME>;PORT=1433;DATABASE=<DATABASE_NAME>;UID=<USERNAME>;PWD=<PASSWORD>;TDS_Version=8.0;')
)
for row in engine.execute('SELECT * FROM Table2'):
    print (row)

编程错误:(pyodbc.ProgrammingError) ('42000', “[42000] [FreeTDS][SQL Server]'schema_name' 不是可识别的函数名称。(195) (SQLExecDirectW)“) [SQL:选择 schema_name()] (此错误的背景见:https://sqlalche.me/e/14/f405)

我该如何连接它?

sql-server sqlalchemy pyodbc sql-server-2000

评论

0赞 AlwaysLearning 3/23/2022
Microsoft 已经不支持 SQL Server 2000 很多年了。您将很难找到仍然可以连接到它(有用)的现代工具。例如:?SQL Server 2000 仅受 TDS 版本 7.1 支持TDS_Version=8.0
1赞 Gord Thompson 3/23/2022
SQLAlchemy 1.4 不支持 SQL Server 2000。试着看看这是否适合你。pip install sqlalchemy==1.3.24
0赞 T_Ner 3/24/2022
@GordThompson 将 sqlalchemy 降级为 sqlalchemy==1.3.24 它的工作,谢谢

答:

2赞 Gord Thompson 3/24/2022 #1

SQLAlchemy 1.4 不支持 SQL Server 2000。用。pip install sqlalchemy==1.3.24