Python连接到SQL Server-PYODBC-SQLAlchemy:未找到数据源名称,也未指定默认驱动程序



我正在尝试建立与SQL Server的连接,以便可以将我的df上传到一个表(使用.to_sql()(,并在以后使用这个新表运行查询。我的问题是,当尝试建立与SQL Server的连接时(工作数据库在SQL Server上(,当尝试几种不同的方法时,我会收到相同的错误消息。

#Method 1
TR_info = pd.read_excel(TR_path, sheet_name = 'TR information', skiprows = 3)
cnxn_str = (r"Driver={SQL Server Native Client 11.0};"
r"Server=server_name;"
r"Database=ALDB;"
r"Trusted_Connection=yes;") 

cnxn = pyodbc.connect(cnxn_str)
TR_info.to_sql(name='tr_info', schema='RF1', con = cnxn, index=False, if_exists='replace')
#Method 2
TR_info = pd.read_excel(TR_path, sheet_name = 'TR information', skiprows = 3)
import sqlalchemy as sal
engine = sal.create_engine('mssql+pyodbc://server_name/ALDB?driver=SQL Server Native Client 11.0?Trusted_Connection=yes')
conn = engine.connect()
TR_info.to_sql(name='tr_info', schema='RF1', con = conn, index=False, if_exists='replace')

这两种方法都会给我以下错误消息

(pyodbc.InterfaceError(('IM002','[IM002][Microsoft][ODBC驱动程序管理器]未找到数据源名称,也未指定默认驱动程序(0((SQLDriverConnect('((此错误的背景信息位于:https://sqlalche.me/e/14/rvf5)

最后,我还确认在ODBC数据源管理器中安装了SQL Native client 11.0,所以事实并非如此。

我使用的是不同的驱动程序,但可能会使用quote_plus尝试以下语法:

from urllib.parse import quote_plus
SQL_SERVER_NAME = ''
SQL_DB_NAME = ''
SQL_USER = ''
SQL_PW = ''
odbc_connection_string = f"Driver={{ODBC Driver 17 for SQL Server}};Server=tcp:{SQL_SERVER_NAME}.database.windows.net,1433;Database={SQL_DB_NAME};Uid={SQL_USER}@{SQL_SERVER_NAME};Pwd={SQL_PW};Encrypt=yes;TrustServerCertificate=no;Connection Timeout=30;"
SQLALCHEMY_DATABASE_URI = f"mssql+pyodbc:///?odbc_connect={quote_plus(odbc_connection_string)}"

相关内容