求助, flask_sqlalchemy + pymysql 链接 mysql 报错

2018-10-28 10:56:57 +08:00
 nymrli
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 请问该如何解决呢?

4426 次点击
所在节点    问与答
2 条回复
lniwn
2018-10-28 11:33:15 +08:00
报错已经很明确了,我觉得你要先搞清楚,flask_sqlalchemy, SQLAlchemy, pymysql 这三者直接的关系。
flask_sqlalchemy:针对 SQLAlchemy 框架的 flask 插件,方便在 flask 中使用 SQLAlchemy。
SQLAlchemy:ORM 框架,具体实现还需要依赖各个数据库自己的 driver。
pymysql:mysql 的 python 版本 DB API,某种意义上,可以简单理解为上面说的 driver。
lniwn
2018-10-28 11:37:21 +08:00
@lniwn #1 补充一点:
这是三个不同的库,都需要单独安装的,但是你安装了 flask_sqlalchemy 就直接可以使用 SQLAlchemy,是因为 pip 会读取 dependency,自动帮你安装。没有自动安装的,就要手动安装了,比如 mysql 的 dialect:pymysql,或者其他数据库的 dialect。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/501855

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX