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

时间:2018-11-11 20:29:26

标签: python mysql class inheritance sqlalchemy

我已经在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必须是的实例或子类型   输入

我看过其他类似错误的帖子,但无法弄清楚该怎么做才能解决问题。

谢谢

0 个答案:

没有答案