分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 技术分享

Flask web开发之路六

发布时间:2023-09-06 01:47责任编辑:沈小雨关键词:暂无标签

今天写SQLAlchemy数据库 

首先介绍ORM的概念:

ORM,Object类,Relationship:关系,Mapping:映射,也就是模型关系映射

flask-sqlalchemy是一套ORM框架

ORM的好处:可以让我们操作数据库跟操作对象一样,非常方便,因为一个表就抽象成一个类,一条数据就抽象成该类的一个对象

### Flask-SQLAlchemy的使用:
1. 初始化和设置数据库配置信息:
???* 使用flask_sqlalchemy中的SQLAlchemy进行初始化:
???????```
???????from flask_sqlalchemy import SQLAlchemy
???????app = Flask(__name__)
???????db = SQLAlchemy(app)
???????```
2. 设置配置信息:在`config.py`文件中添加以下配置信息:
???```
???# dialect+driver://username:password@host:port/database
???DIALECT = ‘数据库类型‘
???DRIVER = ‘pymysql‘(python2.7是mysqldb)
???USERNAME = ‘用户名‘
???PASSWORD = ‘密码‘
???HOST = ‘127.0.0.1‘
???PORT = ‘3306‘
???DATABASE = ‘数据库名称‘

???SQLALCHEMY_DATABASE_URI = "{}+{}://{}:{}@{}:{}/{}?charset=utf8".format(DIALECT,DRIVER,USERNAME,PASSWORD,HOST
????????????????????????????????????????????????,PORT,DATABASE)

???SQLALCHEMY_TRACK_MODIFICATIONS = False
???```

3. 在主`app`文件中,添加配置文件:
???```
???app = Flask(__name__)
???app.config.from_object(config)
???db = SQLAlchemy(app)
???```
4. 做测试,看有没有问题:
???```
???db.create_all()
???```
???如果没有报错,说明配置没有问题,如果有错误,可以根据错误进行修改。

### 使用Flask-SQLAlchemy创建模型与表的映射:
1. 模型需要继承自`db.Model`,然后需要映射到表中的属性,必须写成`db.Column`的数据类型。
2. 数据类型:
???* ‘db.Integer‘代表的是整形.
???* ‘db.String‘代表的是‘varchar‘,需要指定最长的长度。
???* `db.Text`代表的是`text`。
3. 其他参数:
???* `primary_key`:代表的是将这个字段设置为主键。
???* `autoincrement`:代表的是这个主键为自增长的。
???* `nullable`:代表的是这个字段是否可以为空,默认可以为空,可以将这个值设置为`False`,在数据库中,这个值就不能为空了。
4. 最后需要调用`db.create_all`来将模型真正的创建到数据库中。

数据库的增删改查:

主app文件代码如下:

from flask import Flaskfrom flask_sqlalchemy import SQLAlchemyimport configapp = Flask(__name__)app.config.from_object(config)db = SQLAlchemy(app)# article表:# create table article(# ????id int primary key autoincrement,# ????title varchar(100) not null,# ????content text not null,# )class Article(db.Model): ???__tablename__ = ‘article‘ ???id = db.Column(db.Integer,primary_key=True,autoincrement=True) ???title = db.Column(db.String(100),nullable=False) ???content = db.Column(db.Text,nullable=False)db.create_all()@app.route(‘/‘)def hello_world(): ???# #增加: ???article1 = Article(title=‘aaa‘,content=‘bbb‘) ???db.session.add(article1) ???#事务 ???db.session.commit() ???# #查 ???# # select * from article where title=‘aaa‘; ???# result = Article.query.filter(Article.title ==‘aaa‘).all() ???# article1 = result[0] ???# print(article1.title,article1.content) ???# #改: ???# #1.先把你要更改的数据查找出来 ???# article1 = Article.query.filter(Article.title == ‘aaa‘).first() ???# #2.把这条数据,按你需要的地方进行修改 ???# article1.title = ‘new title‘ ???# #3.做事务的提交 ???# db.session.commit() ???# #删: ???# #1.把需要删除的数据查找出来 ???# article1 = Article.query.filter(Article.content == ‘bbb‘).first() ???# #2.把这条数据删除掉 ???# db.session.delete(article1) ???# #3.做事务提交 ???# db.session.commit() ???return ‘Hello World!‘if __name__ == ‘__main__‘: ???app.run()

### Flask-SQLAlchemy数据的增、删、改、查:
1. 增:
???```
???# 增加:
???article1 = Article(title=‘aaa‘,content=‘bbb‘)
???db.session.add(article1)
???# 事务
???db.session.commit()
???```

注意,这里数据库的操作都在主视图函数里执行,因此只有在打开网页的情况下,数据库的操作才能被执行

2. 查:
???```
???# 查
???# select * from article where article.title=‘aaa‘;
???article1 = Article.query.filter(Article.title == ‘aaa‘).first()
???print ‘title:%s‘ % article1.title
???print ‘content:%s‘ % article1.content
???```
3. 改:
???```
???# 改:
???# 1. 先把你要更改的数据查找出来
???article1 = Article.query.filter(Article.title == ‘aaa‘).first()
???# 2. 把这条数据,你需要修改的地方进行修改
???article1.title = ‘new title‘
???# 3. 做事务的提交
???db.session.commit()
???```
4. 删:
???```
???# 删
???# 1. 把需要删除的数据查找出来
???article1 = Article.query.filter(Article.content == ‘bbb‘).first()
???# 2. 把这条数据删除掉
???db.session.delete(article1)
???# 3. 做事务提交
???db.session.commit()
???```

Flask web开发之路六

原文地址:https://www.cnblogs.com/yqpy/p/8655158.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved