学习完模板系统,接下来要研究的就是框架对数据库的操作,不论python的那个框架,直接使用数据库API(redis、pymysql等)都可以进行操作,但是这些操作不够方便,于是就有了ORM
1、Flask-sqlalchemy
关于Flask-sqlalchemy的相关配置可以参考配置 — Flask-SQLAlchemy 2.0 documentation
SQLAlchemy是python开源的一个ORM模块,类似的模块还有peewee,一些开发者将SQLAlchemy进行了针对Flask的封装,于是就有了Flask-sqlalchemy模块
安装Flask-sqlalchemy,命令:
pip install Flask-sqlalchemy
安装pymysql,命令:
pip install pymysql
2、SQLAlchemy建模
import os from flask import Flask from flask import render_template from flask_sqlalchemy import SQLAlchemy import pymysql pymysql.install_as_MySQLdb() # 创建一个应用 app = Flask(__name__) BASE_DIR = os.path.abspath(os.path.dirname(__file__)) # 链接数据库 app.config["SQLALCHEMY_DATABASE_URI"] = "mysql://root:123456@localhost/flaskdb" # 请求结束之后自动提交 app.config["SQLALCHEMY_COMMIT_ON_TEARDOWN"] = True # 跟踪修改 app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = True models = SQLAlchemy(app) class Test(models.Model): __tablename__ = "test" id = models.Column(models.Integer, primary_key=True) name = models.Column(models.String(32)) time = models.Column(models.Date) @app.route("/index/", methods=["GET", "POST"]) def index(): name = "index" return render_template("index.html", **locals()) if __name__ == '__main__': models.create_all() # 同步数据库 app.run(host="127.0.0.1", port=8000, debug=True)
上面代码链接的是mysql数据库,一般会报以下警告:
解决方案:
导入模块mysql-connector,命令:
pip install mysql-connector
修改链接数据库部分的代码:
app.config["SQLALCHEMY_DATABASE_URI"] = "mysql+mysqlconnector://root:123456@localhost/flaskdb"
至此,警告问题解决