python - 使用 sqlalchemy 引擎访问 mysql 数据库时出错
问题描述
我已经在 mysql 中创建了一个数据库,我正在尝试使用 sqlalchemy 通过 python 访问它。请看下面:
import mysql
from mysql import connector
from sqlalchemy import create_engine
from sqlalchemy.engine import base
from mysql.connector.connection import MySQLConnectionAbstract
from mysql.connector.connection import MySQLConnection
from mysql.connector.cursor import MySQLCursor
def return_connection_string(database_name, database_user, database_password, database_host, database_port):
try:
connection_string = 'mysql+mysqlconnector://' + database_user + ':' + database_password + '@' + database_host + ':' + database_port + '/' + database_name
print(connection_string)
return connection_string
except Exception as e:
print('Encountered error while generating connection string for MySQL!')
print(e)
t=return_connection_string('earningsdb','root','MyNewPass','127.0.0.1','3306')
engine = create_engine(t)
print(engine.table_names())
一切正常,除了最后一条语句,它会引发以下错误
engine.table_names() Traceback(最近一次调用最后一次):
文件“”,第 1 行,在 engine.table_names()
文件“C:\Users\user\Anaconda3\lib\site-packages\sqlalchemy\engine\base.py”,第 2136 行,在 table_names 中,self._optional_conn_ctx_manager(connection) 为 conn:
文件“C:\Users\user\Anaconda3\lib\contextlib.py”,第 81 行, 输入 return next(self.gen)
文件“C:\Users\user\Anaconda3\lib\site-packages\sqlalchemy\engine\base.py”,第 1932 行,在 _optional_conn_ctx_manager 中,self.contextual_connect() 作为 conn:
文件“C:\Users\user\Anaconda3\lib\site-packages\sqlalchemy\engine\base.py”,第 2123 行,在 contextual_connect self._wrap_pool_connect(self.pool.connect, None) 中,
_wrap_pool_connect 中的文件“C:\Users\user\Anaconda3\lib\site-packages\sqlalchemy\engine\base.py”,第 2158 行,返回 fn()
文件“C:\Users\userAnaconda3\lib\site-packages\sqlalchemy\pool.py”,第 403 行,连接返回 _ConnectionFairy._checkout(self)
文件“C:\Users\user\Anaconda3\lib\site-packages\sqlalchemy\pool.py”,第 788 行,在 _checkout 仙女 = _ConnectionRecord.checkout(pool)
结帐中的文件“C:\Users\user\Anaconda3\lib\site-packages\sqlalchemy\pool.py”,第 532 行,rec = pool._do_get()
_do_get self._dec_overflow() 中的文件“C:\Users\user\Anaconda3\lib\site-packages\sqlalchemy\pool.py”,第 1193 行
文件“C:\Users\user\Anaconda3\lib\site-packages\sqlalchemy\util\langhelpers.py”,第 66 行,退出 compat.reraise(exc_type, exc_value, exc_tb)
文件“C:\Users\user\Anaconda3\lib\site-packages\sqlalchemy\util\compat.py”,第 187 行,在 reraise raise value
文件“C:\Users\user\Anaconda3\lib\site-packages\sqlalchemy\pool.py”,第 1190 行,在 _do_get return self._create_connection()
_create_connection 中的文件“C:\Users\user\Anaconda3\lib\site-packages\sqlalchemy\pool.py”,第 350 行,返回 _ConnectionRecord(self)
文件“C:\Users\user\Anaconda3\lib\site-packages\sqlalchemy\pool.py”,第 477 行,在init self.__connect(first_connect_check=True)
文件“C:\Users\user\Anaconda3\lib\site-packages\sqlalchemy\pool.py”,第 671 行,在 __connect connection = pool._invoke_creator(self)
文件“C:\Users\user\Anaconda3\lib\site-packages\sqlalchemy\engine\strategies.py”,第 106 行,连接返回 dialect.connect(*cargs, **cparams)
文件“C:\Users\user\Anaconda3\lib\site-packages\sqlalchemy\engine\default.py”,第 410 行,在连接中返回 self.dbapi.connect(*cargs, **cparams)
文件“C:\Users\user\Anaconda3\lib\site-packages\mysql\connector__init__.py”,第 173 行,在连接中返回 MySQLConnection(*args, **kwargs)
文件“C:\Users\user\Anaconda3\lib\site-packages\mysql\connector\connection.py”,第 62 行,在init super(MySQLConnection, self) 中。初始化(*args, **kwargs)
TypeError: super(type, obj): obj 必须是类型的实例或子类型
我查看了其他有类似错误的帖子,但无法弄清楚要解决这个问题到底要做什么。
谢谢
解决方案
推荐阅读
- docker - In which folder is data of volumes in Docker Windows stored?
- git - Jenkins pipeline fails git clone using sshagent plugin?
- angular - application Error net::err_proxy_connection_faild (http://192.168.43.162)
- java - 迭代流时出现 NullPointerException
- android - How I can show my android constrain layout chain icon hints, I did not show this feature in my layout. I am using android version 3.5.2
- python - 如何在keras的LSTM自动编码器中获取middel层的输出
- css - 在 CSS 中使用 Flex 属性集中文本
- vue.js - Life cycle Hook in vueJs
- python - Writing a function to find if greater than 5 or less than 5
- highcharts - Highcharts large treemap 如何获取点击的节点数据?