Flask Model中表的格式
from .. import db
class VulReport(db.Model):
__tablename__ = 'vul_reports'
id = db.Column(db.Integer, primary_key = True)
author = db.Column(db.String(64), index=True)
timestamp = db.Column(db.DateTime, index=True, default=datetime.now)
remaining_time = db.Column(db.String(10),server_default='')
title = db.Column(db.String(128))
Falsk Model中如下两个字段
create_time1 = db.Column(db.DateTime, default=datetime.now) create_time2 = db.Column(db.DateTime, default=datetime.now())
两者的区别:
第一个插入的是期望的, 数据的插入时间,每条数据插入时可自动根据当前时间生成
第二条是一个固定的时间, 程序部署的时间,所有的数据都是这个固定时间
实际上默认值在mysql数据库没有体现, 都是sqlalchemy在插入数据时加的
如果想想在生成的table中有默认值使用server_default
name = db.Column(db.String(45), server_default='hh')
当我们要给布尔值类型指定server_default时,需要用到text
from sqlalchemy import text is_domain = db.Column(db.Boolean,default=False,server_default=text('0'))
因为mysql的datetime类型的数据不支持函数, 所以没法指定默认值位当前时间
1.增加数据(就相当于增加一个实例对象)
user1 = User(name='long',email='[email protected]',password='3456789',role_id=1)
db.session.add(user1)
db.session.commit()
2.修改数据
修改用户表里面的name为long的姓名为:fang 首先查询到名为long的这个用户
user1 = User.query.filter_by(name='long').first()
user1.name = 'fang'
db.session.commit()
3.先查询删除
user1 = User.query.filter_by(name='fang').first()
db.session.delete(user1)
db.session.commit()
4.查询
1.查询所有用户数据 User.query.all()
2.查询有多少个用户 User.query.count()
3.查询第1个用户 User.query.first()
4.查询id为4的用户[3种方式] (1)User.query.get(4) (2)User.query.filter_by(id=4).first() (3)User.query.filter(User.id==4).first()
5.查询名字结尾字符为g的所有数据[开始/包含] User.query.filter(User.name.endswith('g')).all() --[User:wang, User:zhang, User:tang] 包含: User.query.filter(User.name.contains('g')).all() --[<User 1>, <User 2>, <User 5>] 获取第二个对象的名字: list = User.query.filter(User.name.contains('g')).all() list[1].name
6.查询名字不等于wang的所有数据[2种方式] (1)!=: User.query.filter(User.name!='wang').all() (2)not:User.query.filter(not(User.name=='wang')).all()
7.查询名字和邮箱都以 li 开头的所有数据[2种方式] (1)and: User.query.filter(and(User.name.startswith('li'),User.email.startswith('li'))).all() (2)不需要and_:User.query.filter(User.name.startswith('li'),User.email.startswith('li')).all()
8.查询password是 123456 或者 email 以 itheima.com 结尾的所有数据 User.query.filter(or_(User.password=='123456',User.email.endswith('itheima.com'))).all()
9.查询id为 [1, 3, 5, 7, 9] 的用户列表 User.query.filter(User.id.in_([1,3,5,7,9])).all()
10.查询name为liu的角色数据(重要) User.query.filter(User.name=='liu').first().role.name
11.查询所有用户数据,并以邮箱排序 User.query.order_by('email').all()
12.每页3个,查询第2页的数据 User.query.paginate(2,3,False).items 查询数据 User.query.paginate(2,3,False).page ---当前页 User.query.paginate(2,3,False).pages ---总页数
update_time = db.Column(db.DateTime, default=datetime.now,onupdate=datetime.now)