flask_sqlalchemy模块使用

flask_sqlalchemy模块使用

安装

pip install flask_sqlalchemy

使用

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)

//配置sqlite
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///db.sqlite3'
app.config['SQLALCHEMY_ECHO'] = True
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True

//实例化SQL
db = SQLAlchemy(app)

//定义模型
class User(db.Model):
    //定义表名称
    __tablename__ = "user"
	//定义列
    id= db.Column(db.Integer,primary_key=True)
    name = db.Column(db.String(80),unique=True)

定义一列是需要使用 db.Column 的,然后需要指定数据类型,还有列的选项,常用的数据类型有:

类型名 python类型 说明 备注
Integer int 普通整数,一般是32位
SmallInteger int 取值范围小的整数,一般是 16 位
BigInteger int 或 long 不限制精度的整数
Float float 浮点数
String str 变长字符串
Text str 编程字符串,对较长或不限长度的字符串做了优化
Boolean bool 布尔值
Date datetime.date 日期
Time datetime.time 时间
DateTime datetime.datetime 日期和时间
LargeBinary str 二进制文件

而一些常用的 SQLAlchemy

列选项: 选项名 说明
primary_key 如果设为 True,这列就是表的主键
unique 如果设为 True,这列不允许出现重复的值
index 如果设为 True,为这列创建索引,提升查询效率
nullable 如果设为 True,这列允许使用空值,如果设为 False,这列不允许使用空值
default 为这列定义默认值

数据库操作

1、创建数据库

创建数据库要在shell里面创建

cmd >>python
>>from yourapplication import db
>>db.create_all()

数据库创建成功

2、增加数据

--增加单条数据

@app.route("/")
def index():
    user = User(name="你好")
    db.session.add(user)
    db.session.commit()
    db.session.close()
    return "hello"

--增加多条数据

@app.route("/")
def index():
    users =[
        User(name="你好1"),
        User(name="你好2"),
        User(name="你好3"),
        
    ] 
    db.session.add_all(users)
    db.session.commit()
    db.session.close()
    return "hello"

3、查询数据

db.session.query(class).filter_by(name="").all()

name = db.session.query(User).filter_by(name="你好").all()
//返回值为列表

--如果后面不加.all(),那么其实是不会真正到数据库执行的,类似 all 的执行器还有很多,常用的有:

方法 说明
all 以列表形式返回查询的所有结果
first 返回查询的第一个结果,如果没有结果,则返回 None
first_or_404 返回查询的第一个结果,如果没有结果,则终止请求,返回 404 错误输出
get 返回指定主键对应的行,如果没有对应的行,则返回 None
get_or_404 返回指定主键对应的行,如果没找到指定的主键,则终止请求,返回 404 错误输出
count 返回查询结果的数量
paginate 返回一个 Paginate 对象,它包含指定范围内的结果

4、删除数据

查询到数据之后再删除

db.session.query(User).filter_by(id=).delete()
db.session.commit()
db.session.close()

5、修改数据

db.session.query(User).filter_by(id=).update()
db.session.commit()
db.session.close()
posted @ 2021-05-17 20:58  青鷣丶  阅读(297)  评论(0编辑  收藏  举报