日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【Flask】数据的CRUD之增加和查询操作

發(fā)布時間:2025/3/21 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Flask】数据的CRUD之增加和查询操作 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

用session做數(shù)據(jù)的增刪改查操作:

1、創(chuàng)建模型類,生成數(shù)據(jù)表

#第一步:創(chuàng)建基類 Base=declarative_base(engine)#第二步:定義python類和表的映射 class Person(Base):__tablename__='t_person' #創(chuàng)建表名,最好是t_開頭id=Column(name='id',type_=Integer,primary_key=True,autoincrement=True)name=Column(name='name',type_=String(255))age=Column(name='age',type_=Integer)address=Column(name='address',type_=String(255))country=Column(name='country',type_=String(50)) #創(chuàng)建表之后新加的字段city=Column(name='city',type_=String(50)) #創(chuàng)建表之后新加的字段def __str__(self):return '姓名:{}-年領:{}-地址:{}-國家:{}-城市:{}'.format(self.name,self.age,self.address,self.country,self.city)#第三步:模型類創(chuàng)建表 #Base.metadata.drop_all() Base.metadata.create_all()

2、 構建session對象:

所有和數(shù)據(jù)庫的ORM操作都必須通過一個叫做session的會話對象來實現(xiàn)
通過以下代碼來獲取會話對象:

from sqlalchemy.orm import sessionmaker engine = create_engine(DB_URI) Base = declarative_base(engine) session = sessionmaker(engine)() # 注意,返回的是一個函數(shù)

特別注意1:session = sessionmaker(engine)() 返回的是一個函數(shù)

3、增加數(shù)據(jù)(C)

增加一條數(shù)據(jù)

#創(chuàng)建對象,也即創(chuàng)建一條數(shù)據(jù): p1=Person(name='zz',age=20,address='豐臺區(qū)',country='中國',city='北京') # 將這個對象添加到`session`會話對象中: session.add(p1) # 將session中的對象做commit操作(提交) session.commit()

一次性增加多條數(shù)據(jù)

#添加數(shù)據(jù)到數(shù)據(jù)庫 p1=Person(name='django',age=17,address='豐臺區(qū)',country='中國',city='北京') p2=Person(name='kb',age=21,address='大興區(qū)',country='中國',city='北京') p3=Person(name='python',age=18,address='昌平區(qū)',country='中國',city='北京') p4=Person(name='flask',age=25,address='海淀區(qū)',country='中國',city='北京') session.add_all([p1,p2,p3,p4]) session.commit()

4、查找數(shù)據(jù)

1、查找模型對應的表中所有的數(shù)據(jù)

all_person=session.query(Person).all() for person in all_person:print(person) 姓名:zz-年領:20-地址:豐臺區(qū)-國家:中國-城市:北京 姓名:django-年領:17-地址:豐臺區(qū)-國家:中國-城市:北京 姓名:kb-年領:21-地址:大興區(qū)-國家:中國-城市:北京 姓名:python-年領:18-地址:昌平區(qū)-國家:中國-城市:北京 姓名:flask-年領:25-地址:海淀區(qū)-國家:中國-城市:北京

2、使用first方法獲取結果集中的第一條數(shù)據(jù)

p1=session.query(Person).first() print(p1) 姓名:zz-年領:20-地址:豐臺區(qū)-國家:中國-城市:北京

3、使用filter來做條件查詢
例如:查詢年領在20歲以上的人物信息

p2=session.query(Person).filter(Person.age>20) print(p2)

打印結果:是一條sql語句

SELECT t_person.id AS t_person_id, t_person.name AS t_person_name, t_person.age AS t_person_age, t_person.address AS t_person_address, t_person.country AS t_person_country, t_person.city AS t_person_city FROM t_person WHERE t_person.age > %(age_1)s

注意2:只有加上first,all函數(shù)才會返回具體的數(shù)據(jù),不然只打印出sql語句

p3=session.query(Person).filter(Person.age>20).all() for p in p3:print(p) 姓名:kb-年領:21-地址:大興區(qū)-國家:中國-城市:北京 姓名:flask-年領:25-地址:海淀區(qū)-國家:中國-城市:北京

4、使用filter_by來做條件查詢

p4=session.query(Person).filter_by(age=20).all() for p in p4:print(p) 姓名:zz-年領:20-地址:豐臺區(qū)-國家:中國-城市:北京

五、filter過濾條件:

過濾是數(shù)據(jù)提取的一個很重要的功能,以下對一些常用的過濾條件進行解釋,并且這些過濾條件都是只能通過filter方法實現(xiàn)的:
特別注意3:filter:用模型類名.屬性名=='屬性值’的方式過濾查詢

1.equals :

查詢名字叫python的人物信息

p5=session.query(Person).filter(Person.name=='python').all() print(p5)

2.not equals : !

查詢名字不叫flask的人物信息

p6=session.query(Person).filter(Person.name!='flask').all() print(p6)

3.like & ilike [不區(qū)分大小寫]:

查詢名字包含an的人物信息

p7=session.query(Person).filter(Person.name.like('%an%')).all() print(p7)

4. in_:

查詢地區(qū)為海淀區(qū)和昌平區(qū)下的人物信息

p8=session.query(Person).filter(Person.address.in_(['昌平區(qū)','海淀區(qū)'])).all() print(p8)

5. not in:

查詢地區(qū)不是海淀區(qū)和昌平區(qū)下的任務信息

p9=session.query(Person).filter(~Person.address.in_(['昌平區(qū)','海淀區(qū)'])).all() print(p9)

6. is null:

查詢年領為None的人物信息

p10=session.query(Person).filter(Person.age==None).all() print(p10) 或者 p11=session.query(Person).filter(Person.age.is_(None)).all() print(p11)

7. is not null:

查詢年領不為None的人物信息

p12=session.query(Person).filter(Person.age!=None).all() print(p12) p13=session.query(Person).filter(Person.age.isnot(None)).all() print(p13)

8. and_:

查詢姓名是python,并且年領為20歲的人物信息

p14=session.query(Person).filter(Person.name=='python',Person.age=='20').all() print(p14) 或者 p15 = session.query(Person).filter(and_(Person.name == 'python', Person.age == '20')).all() print(p15) 或者 p16= session.query(Person).filter(Person.name == 'python').filter(Person.age=='20').all() print(p16)

9. or_:

查詢姓名是python,或者年領為18歲的人物信息

p17=session.query(Person).filter(or_(Person.name=='python',Person.age=='20')).all() print(p17)

特別注意4:上面的and_、or_都需要導入

from sqlalchemy import and_,or_

總結

以上是生活随笔為你收集整理的【Flask】数据的CRUD之增加和查询操作的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。