我已经在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()追溯(最近一次呼叫过去):
文件“”,第1行,在 engine.table_names()
文件 “ C:\ Users \ user \ Anaconda3 \ lib \ site-packages \ sqlalchemy \ engine \ base.py”, table_names中的第2136行 使用self._optional_conn_ctx_manager(connection)作为conn:
文件“ C:\ Users \ user \ Anaconda3 \ lib \ contextlib.py”在第81行中 输入 返回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,无),
文件 “ C:\ Users \ user \ Anaconda3 \ lib \ site-packages \ sqlalchemy \ engine \ base.py”, _wrap_pool_connect中的第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”, _checkout中的第788行 fairy = _ConnectionRecord.checkout(pool)
文件“ C:\ Users \ user \ Anaconda3 \ lib \ site-packages \ sqlalchemy \ pool.py”, 532行,结帐 rec =游泳池._do_get()
文件“ C:\ Users \ user \ Anaconda3 \ lib \ site-packages \ sqlalchemy \ pool.py”, 第1193行,在_do_get中 self._dec_overflow()
文件 “ 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行,加价 提高价值
文件“ C:\ Users \ user \ Anaconda3 \ lib \ site-packages \ sqlalchemy \ pool.py”, _do_get中的第1190行 返回self._create_connection()
文件“ C:\ Users \ user \ Anaconda3 \ lib \ site-packages \ sqlalchemy \ pool.py”, 第350行,在_create_connection中 返回_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”, __connect中的第671行 连接=池._invoke_creator(自己)
文件 “ C:\ Users \ user \ Anaconda3 \ lib \ site-packages \ sqlalchemy \ engine \ strategies.py”, 连接线106 返回方言.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行,初始化 超级(MySQLConnection,self)。初始化(* args,** kwargs)
TypeError:super(type,obj):obj必须是的实例或子类型 输入
我看过其他类似错误的帖子,但无法弄清楚该怎么做才能解决问题。
谢谢