簡體   English   中英

無法使用 pyodbc 和 SQLAlchemy 通過 Python 連接到 MySQL

[英]Cannot connect to MySQL via Python using pyodbc and SQLAlchemy

我一直在努力使用 pyodbc 連接到 mysql db。 問題是,我在任何地方都找不到合適的語法。 我在互聯網上看到了不同的語法,包括 stackoverflow,但它們對我不起作用。 首先,我應該將什么傳遞給連接的“驅動程序”參數。 是系統自帶的odbc驅動嗎? 使用 UID 和 Pass v/s Trusted connection 有什么區別? 這是我現在使用的代碼。 請幫忙。

    def createconnection(host, port, db, uid, pwd):
        '''
        To create a mysql connection 
        '''
        try:
            odbcpath = r'C:\Windows\system32\odbcad32.exe'
            params = urllib.parse.quote_plus("DRIVER={C:\Windows\system32\odbcad32.exe};"
                                             f"SERVER={host,port};"
                                             f"DATABASE={db};"
                                             "Trusted_connection=yes")
            # db_engine = create_engine(f'mysql+pyodbc://{host}/{db}?driver={odbcpath}? 
              Trusted_Connection=yes')
            db_engine = create_engine(f"mysql+pyodbc:///?odbc_connect={params}")
            self.connection = db_engine.connect()
        except:
            print('Error while creating the db engine and connection')
            raise

此代碼給出以下錯誤

sqlalchemy.exc.InterfaceError: (pyodbc.InterfaceError) ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified (0) (SQLDriverConnect)')
(Background on this error at: http://sqlalche.me/e/13/rvf5)

如果可能,請解釋什么是 ODBC/DSN 以及使用 DSN 的連接與使用 UID 和 PWD 的連接有何不同?

對於 MySQL,您首先需要確定您是否真的要使用 ODBC。 對於 SQLAlchemy,首選的 MySQL DBAPI 層是mysqlclient

為了在 Windows 上成功使用 ODBC,您需要為您的特定數據庫安裝 ODBC 驅動程序。 ODBC 驅動程序不可互換。

對於 MySQL,ODBC 驅動程序為MySQL 連接器/ODBC 您可以像安裝任何其他 Windows 程序一樣安裝它。 安裝后,它會出現在您的 ODBC 管理員中

ODBC 管理員

您將根據需要使用DRIVER=MySQL ODBC 8.0 ANSI DriverDRIVER=MySQL ODBC 8.0 Unicode Driver 有關詳細信息,請參閱pyodbc wiki 中的 Unicode 注釋

Trusted_Connection=yes是 Microsoft SQL 服務器 ODBC 驅動程序的連接字符串參數,不適用於 MySQL189750C56AZDB178EDBA039。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM