使用sqlalchemy引擎访问mysql数据库时出错

uujelgoq  于 2021-06-18  发布在  Mysql
关注(0)|答案(0)|浏览(272)

我在mysql中创建了一个数据库,并尝试通过python访问它,使用sqlalchemy。请看下面:

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\u names()中
文件“c:\users\user\anaconda3\lib\site packages\sqlalchemy\engine\base.py”,第2136行,表格\u names,self.\u optional\u conn\u ctx\u manager(connection)as 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行,在\u optional\u conn\u ctx\u manager中,self.contextual\u connect()作为conn:
文件“c:\users\user\anaconda3\lib\site packages\sqlalchemy\engine\base.py”,第2123行,上下文\u connect self.\u wrap \u pool \u connect(self.pool.connect,none),
文件“c:\users\user\anaconda3\lib\site packages\sqlalchemy\engine\base.py”,第2158行,在\u wrap\u pool\u connect return fn()中
文件“c:\users\useranaconda3\lib\site packages\sqlalchemy\pool.py”,第403行,在connect return\u connectionfairy.\u checkout(self)中
文件“c:\users\user\anaconda3\lib\site packages\sqlalchemy\pool.py”,第788行,在\u checkout fairy=\u connectionrecord.checkout(pool)中
文件“c:\users\user\anaconda3\lib\site packages\sqlalchemy\pool.py”,第532行,checkout rec=pool.\u do\u get()
文件“c:\users\user\anaconda3\lib\site packages\sqlalchemy\pool.py”,第1193行,在\u do\u get self.\u dec\u overflow()
文件“c:\users\user\anaconda3\lib\site packages\sqlalchemy\util\langhelpers.py”,第66行,在exit compat.reraise中(exc\u type,exc\u value,exc\u 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行,在\u do\u get return self.\u create\u connection()
文件“c:\users\user\anaconda3\lib\site packages\sqlalchemy\pool.py”,第350行,在\u create\u connection return\u connectionrecord(self)中
文件“c:\users\user\anaconda3\lib\site packages\sqlalchemy\pool.py”,第477行,在init self.\uu connect(first\u connect\u check=true)
文件“c:\users\user\anaconda3\lib\site packages\sqlalchemy\pool.py”,第671行,在\uu connect connection=pool
文件“c:\users\user\anaconda3\lib\site packages\sqlalchemy\engine\strategies.py”,第106行,connect return dialect.connect(*cargs,**cparams)
文件“c:\users\user\anaconda3\lib\site packages\sqlalchemy\engine\default.py”,第410行,在connect return self.dbapi.connect(*cargs,**cparams)中
文件“c:\users\user\anaconda3\lib\site packages\mysql\connector\uuu init\uuuu.py”,第173行,在connect return mysqlconnection(*args,**kwargs)中
文件“c:\users\user\anaconda3\lib\site packages\mysql\connector\connection.py”,第62行,在init super(mysqlconnection,self).init(*args,**kwargs)中
typeerror:super(type,obj):obj必须是类型的示例或子类型
我也看过其他有类似错误的帖子,但不知道该怎么做才能解决这个问题。
谢谢

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题