无法使用 pyodbc 和 SQLAlchemy 通过 Python 连接到 MySQL
Cannot connect to MySQL via Python using pyodbc and SQLAlchemy
我一直在努力使用 pyodbc 连接到 mysql 数据库。问题是,我在任何地方都找不到合适的语法。我在互联网上看到过不同的语法,包括 Whosebug,但它们对我不起作用。
首先,我应该将什么传递给连接的“DRIVER”参数。是系统自带的odbc驱动吗?
使用 UID 和通过 v/s 信任连接有什么区别?
这是我现在使用的代码。请帮忙。
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 Connector/ODBC。您可以像安装任何其他 Windows 程序一样安装它。安装后,它会出现在您的 ODBC 管理器中
您可以根据需要使用 DRIVER=MySQL ODBC 8.0 ANSI Driver
或 DRIVER=MySQL ODBC 8.0 Unicode Driver
。有关详细信息,请参阅 Unicode notes in the pyodbc wiki。
Trusted_Connection=yes
是 Microsoft SQL 服务器 ODBC 驱动程序的连接字符串参数,不适用于 MySQL ODBC。
我一直在努力使用 pyodbc 连接到 mysql 数据库。问题是,我在任何地方都找不到合适的语法。我在互联网上看到过不同的语法,包括 Whosebug,但它们对我不起作用。 首先,我应该将什么传递给连接的“DRIVER”参数。是系统自带的odbc驱动吗? 使用 UID 和通过 v/s 信任连接有什么区别? 这是我现在使用的代码。请帮忙。
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 Connector/ODBC。您可以像安装任何其他 Windows 程序一样安装它。安装后,它会出现在您的 ODBC 管理器中
您可以根据需要使用 DRIVER=MySQL ODBC 8.0 ANSI Driver
或 DRIVER=MySQL ODBC 8.0 Unicode Driver
。有关详细信息,请参阅 Unicode notes in the pyodbc wiki。
Trusted_Connection=yes
是 Microsoft SQL 服务器 ODBC 驱动程序的连接字符串参数,不适用于 MySQL ODBC。