【问题标题】:Python connect to SQL Server - PYODBC - SQLAlchemy: Data source name not found and no default driver specifiedPython 连接到 SQL Server - PYODBC - SQLAlchemy:未找到数据源名称且未指定默认驱动程序
【发布时间】:2022-08-13 05:09:22
【问题描述】:

我正在尝试建立与 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 Driver Manager] 未找到数据源名称且未指定默认驱动程序 (0) (SQLDriverConnect)\') (此错误的背景:https://sqlalche.me/e/14/rvf5)

最后,我还确认我在我的 ODBC 数据源管理器中设置了 SQL Native client 11.0,所以不是这样。

  • 这回答了你的问题了吗? pandas to sql server
  • 不,我也看到了,并将其用于我的第二种方法,但仍然收到相同的错误消息。除非你能看到我的方法和你链接的我错过的方法之间有什么区别?请注意,我的连接是受信任的连接,而该示例不是,但我认为我已正确格式化它..
  • 你打电话给engine.connect()。在示例中,引擎对象被赋予to_sql
  • 还可以在第一条评论中查看连接字符串的不同格式
  • 标题中的错误信息与问题本身的错误信息有很大不同。我很困惑。

标签: python sql-server sqlalchemy pyodbc


【解决方案1】:

我正在使用不同的驱动程序,但也许尝试使用以下语法报价加号

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)}"

【讨论】:

    猜你喜欢
    • 2018-02-13
    • 2017-05-11
    • 2012-03-20
    • 1970-01-01
    • 1970-01-01
    • 2013-04-23
    • 1970-01-01
    相关资源
    最近更新 更多