flask学习之数据库操作一
admin
2023-06-07 16:01:37
0

数据库操作使用

sqlalchemy模块安装(需安装MySQL-python/python-devel)
pip install flask-sqlalchemy


目录结构

├── app
│   ├── __init__.py
│   └── models.py
├── config.py


配置环境

vim config.py
#coding:utf-8
SQLALCHEMY_DATABASE_URI = 'mysql://mysqlTest:mysqlTest@192.168.3.85/mysqlTest'
SQLALCHEMY_TRACK_MODIFICATIONS = True    #python版本低报出警告
#初始化
vim app/__init__.py
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config.from_object('config')
db = SQLAlchemy(app)
from app import models
#定义表模型(举例用)
vim app/models.py
from app import db
class User(db.Model):
        id = db.Column(db.Integer,primary_key = True)
        nickname = db.Column(db.String(64),index=True,unique = True)
        email = db.Column(db.String(120),index=True,unique = True)
        def __repr__(self):
                return '' % (self.nickname)


shell模式下使用介绍

#创建数据模型/删除数据模型
>>> from app import db
>>> from app.models import User    #导入User模型
>>> db.create_all()            #创建数据库模型
>>> db.drop_all()
>>> db.create_all()
#添加数据
#单条数据的提交方式
>>> name_admin = User(nickname='admin',email='admin@flask.com') #赋值数据   
>>> db.session.add(name_admin)    #添加数据
>>> db.session.commit()    #提交数据
#多条数据的提交方式
>>> name_user1 = User(nickname='user1',email='user1@flask.com')
>>> name_user2 = User(nickname='user2',email='user2@flask.com')
>>> db.session.add_all([name_user1,name_user2])    #提交的是一个列表
>>> db.session.commit()
mysql> select * from user;
+----+----------+-----------------+
| id | nickname | email           |
+----+----------+-----------------+
|  1 | admin    | admin@flask.com |
|  2 | user1    | user1@flask.com |
|  3 | user2    | user2@flask.com |
+----+----------+-----------------+


查询数据

#查询所有数据
all=User.query.all()
#过滤查询(filter_by()),查询nickname=user1的行
>>> user1 = User.query.filter_by(id=2).first() 
>>> user2 = User.query.filter_by(id=3).first()
>>> user1

>>> user2

#查询该行数据的各个字段,查看nickname字段的值
>>> user1.nickname
u'user1'
>>> user2.nickname
u'user2'
#结果显示限制(limit()),显示两条查询结果
>>> result = User.query.limit(2).all()
>>> result
[]

修改数据

#修改数据,修改对应字段的值后直接提交即可
#修改use1的nickname字段的值为user001
user1.nickname = 'user001'
db.session.add(user1)
db.session.commit()
删除数据
db.session.delete(user1)
db.session.commit()


#常见查询过滤器
filter() 把过滤器添加到原查询上,返回一个新查询
filter_by() 把等值过滤器添加到原查询上,返回一个新查询
limit() 使用指定的值限制原查询返回的结果数量,返回一个新查询
offset() 偏移原查询返回的结果,返回一个新查询
order_by() 根据指定条件对原查询结果进行排序,返回一个新查询
group_by() 根据指定条件对原查询结果进行分组,返回一个新查询
#常见查询执行函数
all() 以列表形式返回查询的所有结果
first() 返回查询的第一个结果,如果没有结果,则返回 None
first_or_404() 返回查询的第一个结果,如果没有结果,则终止请求,返回 404 错误响应
get() 返回指定主键对应的行,如果没有对应的行,则返回 None
get_or_404() 返回指定主键对应的行,如果没找到指定的主键,则终止请求,返回 404 错误响应
count() 返回查询结果的数量
paginate() 返回一个 Paginate 对象,它包含指定范围内的结果


相关内容

热门资讯

当前约有240艘船只等待伊朗批... △霍尔木兹海峡(资料图)据伊朗方面24日消息,目前约有240艘船只正在等待获得伊朗方面许可后进入霍尔...
时隔12年,中国再度举办这一重... ‍‍5月23日,中共中央政治局委员、国务院副总理何立峰在苏州出席亚太经合组织(APEC)贸易部长会议...
美伊协议未官宣共和党先内讧,克... 周六,得克萨斯州共和党参议员泰德·克鲁兹表示,他对美国与伊朗即将达成的协议条款“深感担忧”,随后在社...
非常时刻,任正非突然亮相《新闻... 作者 | 布语发现没有,任正非最近在《新闻联播》中公开亮相了,仅仅10秒的镜头,信号却很不寻常。5月...
投喂狮子时观光车车门突然打开!... 5月21日,北京八达岭野生动物园猛兽区发生观光游览车车门意外开启事件,引发社会高度关注。据新京报报道...
重庆电视机安装费 如果是小米或者是索尼的电视机,在安底座的时候是不会收费的,但是如果是安装架子或者是墙壁的费用是大概会...
空调安装费是多少钱 空调安装费用是由多个因素决定的,包括空调的类型、安装位置、管路长度、安装人员等等。因此,空调安装费用...
通风管道安装费多少钱一平米 通风管道的安装费用会受到多种因素的影响,例如管道的材质、直径、长度、安装位置、安装难度等等。因此,很...
问一问欧普led吸顶灯坏了怎么... 您好,欧普led吸顶灯是知名的品牌,在市场上是非常常见的,而且欧普这个品牌在业界的口碑也是非常的好,...
led吸顶灯关了还微亮怎么解决 LED 吸顶灯关了还微亮可能是由以下原因引起的:1. 电源问题:灯具的电源可能存在漏电或电容放电等问...