【Flask】数据的CRUD之增加和查询操作
生活随笔
收集整理的這篇文章主要介紹了
【Flask】数据的CRUD之增加和查询操作
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
用session做數據的增刪改查操作:
1、創建模型類,生成數據表
#第一步:創建基類 Base=declarative_base(engine)#第二步:定義python類和表的映射 class Person(Base):__tablename__='t_person' #創建表名,最好是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)) #創建表之后新加的字段city=Column(name='city',type_=String(50)) #創建表之后新加的字段def __str__(self):return '姓名:{}-年領:{}-地址:{}-國家:{}-城市:{}'.format(self.name,self.age,self.address,self.country,self.city)#第三步:模型類創建表 #Base.metadata.drop_all() Base.metadata.create_all()2、 構建session對象:
所有和數據庫的ORM操作都必須通過一個叫做session的會話對象來實現,
通過以下代碼來獲取會話對象:
特別注意1:session = sessionmaker(engine)() 返回的是一個函數
3、增加數據(C)
增加一條數據
#創建對象,也即創建一條數據: p1=Person(name='zz',age=20,address='豐臺區',country='中國',city='北京') # 將這個對象添加到`session`會話對象中: session.add(p1) # 將session中的對象做commit操作(提交) session.commit()一次性增加多條數據
#添加數據到數據庫 p1=Person(name='django',age=17,address='豐臺區',country='中國',city='北京') p2=Person(name='kb',age=21,address='大興區',country='中國',city='北京') p3=Person(name='python',age=18,address='昌平區',country='中國',city='北京') p4=Person(name='flask',age=25,address='海淀區',country='中國',city='北京') session.add_all([p1,p2,p3,p4]) session.commit()4、查找數據
1、查找模型對應的表中所有的數據
all_person=session.query(Person).all() for person in all_person:print(person) 姓名:zz-年領:20-地址:豐臺區-國家:中國-城市:北京 姓名:django-年領:17-地址:豐臺區-國家:中國-城市:北京 姓名:kb-年領:21-地址:大興區-國家:中國-城市:北京 姓名:python-年領:18-地址:昌平區-國家:中國-城市:北京 姓名:flask-年領:25-地址:海淀區-國家:中國-城市:北京2、使用first方法獲取結果集中的第一條數據
p1=session.query(Person).first() print(p1) 姓名:zz-年領:20-地址:豐臺區-國家:中國-城市:北京3、使用filter來做條件查詢
例如:查詢年領在20歲以上的人物信息
打印結果:是一條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函數才會返回具體的數據,不然只打印出sql語句
p3=session.query(Person).filter(Person.age>20).all() for p in p3:print(p) 姓名:kb-年領:21-地址:大興區-國家:中國-城市:北京 姓名:flask-年領:25-地址:海淀區-國家:中國-城市:北京4、使用filter_by來做條件查詢
p4=session.query(Person).filter_by(age=20).all() for p in p4:print(p) 姓名:zz-年領:20-地址:豐臺區-國家:中國-城市:北京五、filter過濾條件:
過濾是數據提取的一個很重要的功能,以下對一些常用的過濾條件進行解釋,并且這些過濾條件都是只能通過filter方法實現的:
特別注意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 [不區分大小寫]:
查詢名字包含an的人物信息
p7=session.query(Person).filter(Person.name.like('%an%')).all() print(p7)4. in_:
查詢地區為海淀區和昌平區下的人物信息
p8=session.query(Person).filter(Person.address.in_(['昌平區','海淀區'])).all() print(p8)5. not in:
查詢地區不是海淀區和昌平區下的任務信息
p9=session.query(Person).filter(~Person.address.in_(['昌平區','海淀區'])).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之增加和查询操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Flask】创建一个蓝图
- 下一篇: 【Flask】ORM一对一关联关系