Flask的数据库操作

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 ---总页数

记录每次修改的时间,onupdate

update_time = db.Column(db.DateTime, default=datetime.now,onupdate=datetime.now)

你可能感兴趣的:(Flask)