Flask:数据库的建模
2024-09-01 11:36:45
学习完模板系统,接下来要研究的就是框架对数据库的操作,不论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"
至此,警告问题解决
最新文章
- Entity Framework 教程——安装Entity Framework环境
- xamarin UWP证书问题汇总
- 21-React的学习
- Thinkphp源码分析系列(六)–路由机制
- windows内核 内存管理
- Toad for Oracle 快捷键
- 编写自己的单点登录(SSO)服务
- jQuery validata插件实现(每周一插件系列)
- 潜在风险的频次vs潜在风险的严重影响的程度(以及恢复)
- java基础语法-内部类与匿名内部类
- 由于SVN导致桌面图标都带有?标记
- CSS3简单画出3d图形
- java中如何获得方法中的参数名
- 深入理解Redis Cluster
- [ Windows BAT Script ] 删除某个目录下的所有某类文件
- 7.3 5种IO模型与IO复用
- 747_Largest-Number-At-Least-Twice-of-Others
- [转]DbHelper通用数据库访问帮助类
- Create XML Files Out Of SQL Server With SSIS And FOR XML Syntax
- DBArtist之Oracle入门第2步: 了解Oracle的Database Control
热门文章
- Mac OS Catalina 如何删除自带的应用
- postgresql从库搭建--逻辑复制
- Step ‘Publish JUnit test result report’ failed: No test report files were found问题解决
- 什么是线程调度器(Thread Scheduler)和时间分片(Time Slicing )?
- DrawerLayout(抽屉效果)
- WebGL简易教程(十):光照
- Zabbix监控方案-官方最新4.4版本
- .NET Core 3.0之深入源码理解ObjectPool(一)
- 搭建docker+swoole+php7 的环境
- 一个神秘现象引发对beego框架的思考