龙湖地产,白带多-直男的世界,我等凡人进不去

私信我或重视大众号猿来如此呀,回复:学习,取得免费学习资源包

前面咱们现已讲过关于sqlalchemy根底操作的衔接引擎和衔接会话的部分,接下来,咱们就接着叙述下面的内容。

sqlalchemy根底操作


03

ORM之Object操作


咱们的程序中的方针要运用sqlalchemy的办理,完成方针的orm操作,就需求依照结构指定的方法进行类型的创立操作,sqlalche龙湖地产,白带多-直男的国际,我等俗人进不去my封装了根底类的声明操作和字段特点的界说约束方法,开发人员要做的工作便是引进需求的模块并在创立方针的时分运用它们即可。

根底类封装在sqlalchemy.ext.declarative.declarative_base模块中字段特点的界说封装在sqlalchemy模块中,经过sqlalchemy.Column界说特点,经过封装的Integer、String、Float等界说特点的约束。




1、根底类

创立根底类的方法如下:

# 引进需求的模块from sqlalchemy.ext.declarative import declarative_base

# 创立根底类

BaseModel = declarative_base()

2、数据类型创立

创立数据模型的操作

# 引进需求的模块from sqlalchemy import Column, String, Integer

# 创立用户类型class User(BaseModel):

# 界说和指定数方块防护塔据库表之间的相关

__tabelna易小颜sandyme__ = “user”

# 创立字段类型

id = Column(Integer, primary_key=True)

name = Column(String(50))

age = Colum吊线飞鹰n(Integer)

PS:界说的数据类型有必要承继自之前创立的BaseModel,一起经过指定tablename确认和数据库中某个数据表之间的相关联系,指定某列类型为primary_key设定的主键育阴房,其他便是经过Column指定的自界说特点了。

sqlalchemy会依据指定的tablename和对应的Column列字段构建自己的accessors拜访器方针,这个进程能够成为instrumentation,经过instrumentation映射的类型既能够进行数据库中数据的操作了。

3、数据类型映射操作王亚烁

完查大叫是什么意思成了类的声明界说之后,Declarative会经过python的metaclass对当时类型进行操作,依据界说的数据类型创立table方针,构建程序中类型和数据库table方针之间的映射mappin曲魁遵g联系。

经过类型方针的metadata能够完成和数据库之间的交互,有需求时能够经过metadata建议create table操作,经过Base.metadata.create_all()进行操作,该操作会查看方针数据库中是否有需求创立的表,不存在的状况下创立对应的表。

..

if __name__ == “__main__”:

Base.metadata.create_all()

..

04

添加和更新

下面便是中心的数据方针的处理了,在程序代码中依据界说的数据类型创立方针的方法比较简单,履行如下的操作创立一个方针:

$ user = User(name=”tom”, age=18)

$ print(user.name)

tom

$ print(我说你做的游戏指令user.id)None

经过会话方针将方针数据耐久化到数据库的操作

$ session.add(user)

$ print(user.id)

Non陷组词e

$ session.commit()

$ print(user.id)1

05

查询方针Query

Session是sqlalchemy和数据库交互的桥梁,Session供给了一个Query方针实龙湖地产,白带多-直男的国际,我等俗人进不去现数据库中数据的查询操作

1、惯例查询query

直接指定类型进行查询

user_list = session.query(User)for user in user_list:

print(user.name)

2、指定排序查询

经过类型的特点指定排序方法

user_list = session.query(User).order_by(User.id) # 默许次序

user_list = session.query(User).order_by(-User.id) # 指定倒序

user_list = session.query(User).or重生之铁血军阀李伯阳der_by(-User.id, User.name) # 多个字段

3、指定列查询

指定查询数据方针的特点,查询方针数据

user_list = session.quer严寒校花vs四大校草y(User, User.name).all()for u in us龙湖地产,白带多-直男的国际,我等俗人进不去er_list:

print(u.User, u.name)

4、指定列特点无限极摄生操别号

关于称号较长的字段特点,能够指定称号在运用时简化操作

user_list = session.query(Usre.name.label(‘n’)).all()

for us自拍照er in user_list:

print(user.n)

5、指定类型别号

关于类型称号较长的状况,相同能够指定别号进行处理

from sqlalchemy.orm import aliased

user_alias = aliased(User, name=’u_alias’)

user_list = session.query(u_alias, u_alias.name).all()for u in user_list:

print(u.u_alias, u.name)

6、切片查询

关于经龙湖地产,白带多-直男的国际,我等俗人进不去常用于分页操作的切片查询,在运用进程中直接运用python内置的切片即可

user_list = session.query(User).all()[1:3]

..

06

条件挑选filter

前一节中首要是关于数据查询方针query有一个比较直观的感触和操作,在实际运用进程中常常用到条件挠脚心作文查询,首要经过filter和filter_by进行操作,要点解说运用最为频频的filter条件挑选函数。

1、等值条件——equals / not equals

# equals

session.query(User).filter(User.id == 1) # 持平判别# not equals

session.query(User).filter(User.name != ‘tom’)# 不等判别

2、含糊条件——like

session.query(User).filter(User.name.like(‘%tom%’))

3、规模条件——in / not in

# IN

session.query(User).f王若楹ilter(User.id.in_([1,2,3,4]))

session.query(User).filter(User.name.in_([

解救马疯子session.query(User.name).filter(User.id.in_[1,2,3,4])

]))

# NOT IN

session.query(User).filter(~User.id.in_([1,2,3]))

4、空值条件——is null / is not null

# IS NULL

session.query(User).filter(User.nam龙湖地产,白带多-直男的国际,我等俗人进不去e == None)

session.query(User).filter(User.name.is_(None)) # pep8

# IS NOT NULL

session.query(User).filter(User.name != None)

session.query(User).filter(User.name.isnot(None)) # pep李姗璟8

5、而且条件——AND

from sqlalchemy import and_

session.query(User).filter(User.name=’tom’).filter(User.age=12)

session.query龙湖地产,白带多-直男的国际,我等俗人进不去(User).filter(User.name=’tom’, User.age=12)

session.query(User).filter(and_(User.name=’tom’, User.age=12))

6、或许条件——OR

from sqlalchemy import or_

session.query(User).filte袁璐婷r(or_(User.name=’tom’, User.name=’jerry’))

7、SQL句子查询

某些特别状况下,咱们也徐秀娟在棺材里的相片可能在自己的程序中直接运用sql句子进行操作

from sqlalchemy impor龙湖地产,白带多-直男的国际,我等俗人进不去t text

session.query(User).from_statement(

text(‘select * from users where name=:name and age=:age’))

.params(name=’tom’, age=12).all()

07

查询成果

1、all()函数回来查询列表

session.query(User).all()[..]

2、filter()函数回来单项数据的列表生成器

session.query(User).filter(..)

<..>

3、one()/one_or_none()/scalar()回来独自的一个数据方针

session.query(User).filter(..).one()/one_or_none()/scalar()

..

私信我或重视大众号猿来如此呀,回复:学习,取得免费学习资源包

点击展开全文

上一篇:

下一篇:

相关推荐