nymrli
V2EX  ›  问与答

求助, flask_sqlalchemy + pymysql 链接 mysql 报错

  •  
  •   nymrli · Oct 28, 2018 · 4893 views
    This topic created in 2755 days ago, the information mentioned may be changed or developed.
    from flask import Flask
    
    from flask_sqlalchemy import SQLAlchemy
    import config
    
    app = Flask(__name__)
    
    app.config['SQLALCHEMY_DATABASE_URI'] = "mysql+pymysql://root:cl123123@localhost:3306/flask_test?charset=utf8"
    app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
    
    # app.config.from_object(config)
    db = SQLAlchemy(app)
    db.create_all()
    
    @app.route('/')
    def home():
        return '<h1>Hello World!</h1>'
    
    # class User(db.Model):
    #     __tablename__ = 'user_table_name'
    #     id = db.Column(db.Integer(), primary_key=True)
    #     username = db.Column(db.String(255))
    #     password = db.Column(db.String(255))
    
    
    
    if __name__ == '__main__':
        # manager.run()
        app.run(debug=True)
    
    

    报错为 sqlalchemy.exc.NoSuchModuleError: Can't load plugin: sqlalchemy.dialects:mysql.pymysql 请问该如何解决呢?

    2 replies    2018-10-28 11:37:21 +08:00
    lniwn
        1
    lniwn  
       Oct 28, 2018
    报错已经很明确了,我觉得你要先搞清楚,flask_sqlalchemy, SQLAlchemy, pymysql 这三者直接的关系。
    flask_sqlalchemy:针对 SQLAlchemy 框架的 flask 插件,方便在 flask 中使用 SQLAlchemy。
    SQLAlchemy:ORM 框架,具体实现还需要依赖各个数据库自己的 driver。
    pymysql:mysql 的 python 版本 DB API,某种意义上,可以简单理解为上面说的 driver。
    lniwn
        2
    lniwn  
       Oct 28, 2018
    @lniwn #1 补充一点:
    这是三个不同的库,都需要单独安装的,但是你安装了 flask_sqlalchemy 就直接可以使用 SQLAlchemy,是因为 pip 会读取 dependency,自动帮你安装。没有自动安装的,就要手动安装了,比如 mysql 的 dialect:pymysql,或者其他数据库的 dialect。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1044 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 18:40 · PVG 02:40 · LAX 11:40 · JFK 14:40
    ♥ Do have faith in what you're doing.