Flask的資料庫操作

2021-08-28 23:38:27 字數 3098 閱讀 4282

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()  --[, , ] 獲取第二個物件的名字: 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)

Flask資料庫操作

flask 資料庫主要是學習flask sqlalchemy安裝及連線 使用資料庫 資料庫的遷移,可以定乙個大概的學習目標,我之前是這麼定的 能夠理解 orm 工作原理以及其優缺點 能夠寫出在 flask 中連線 mysql 的配置項格式 ip,埠,資料庫 能夠使用 sqlalchemy 定義出關係...

flask資料庫操作

通過命令生成資料庫 必須先刪除在生成,不易維護 flask自帶遷移資料庫的框架 from flask script import manager 擴充套件db指令 flask script命令擴充套件包 需要安裝 from flask migrate import migrate,migrateco...

flask資料庫操作命令

資料庫增加,刪除,修改操作 增加 user user name laowang db.session.add user db.session.commit 修改 user.name xiaohua db.session.commit 刪除 db.session.delete user db.sess...