ImageVerifierCode 换一换
格式:DOC , 页数:5 ,大小:52KB ,
资源ID:6974755      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-6974755.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(python访问数据库, SQLAlchemy中的Query方法.doc)为本站会员(wspkg9802)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

python访问数据库, SQLAlchemy中的Query方法.doc

1、SQLAlchemy 中的 Query 方法在 SQLAlchemy 中执行查询是通过 session 对象的 query 方法完成的。query 方法非常灵活,你可以根据需要使用不同的查询方式查找数据,下面一一举例。1.直接通过映射类查找:#Querying user instancefor instance in session.query(User).order_by(User.id):print instance.name,instance.fullname这种方法只要在 query 方法中,将映射类作为参数,就可以查询出这个映射类代表的数据库表中的数据。其相当于下面的 SQL 语句:

2、SELECT users.id AS users_id, users.name AS users_name,users.fullname AS users_fullname, users.password AS users_passwordFROM users ORDER BY users.id2.通过映射类的属性字段查询:#Querying by ORM-instrumentfor name,fullname in session.query(User.name,User.fullname):print name,fullname这种方法指定了查询的具体字段,而不是像第一种方法那样把映射类的

3、所有字段都查询出来,其相当于执行了下面的 SQL 语句:SELECT users.name AS users_name, users.fullname AS users_fullnameFROM users3.query 查询的结果是保存在一个元组中的,所以我们可以在 query 中指定返回整个的映射类对象和其中的部分属性字段:#Querying as a Python objectfor row in session.query(User,User.name).all():print row.User,row.name这种查询方法可以返回一个 User 对象以及它的 name 属性字段的值,

4、其相当于执行了下面的 SQL 语句:SELECT users.id AS users_id, users.name AS users_name, users.fullname AS users_fullname, users.password AS users_passwordFROM users其输出结果为一个元组和一个字符串:user(“ed“,“Ed Jones“,“f8x902“) eduser(“Wendy“,“Wendy Williams“,“foobar“) Wendyuser(“Marry“,“Marry Contrary“,“xxg527“) Marryuser(“Fred“

5、,“Fred Flinstone“,“blah“) Fred4.我们还可以给返回的结果起一个别名,或者叫标签:#Querying labeledfor row in session.query(User.name.label(name_label).all():print (row.name_label)这里的关键是 label 方法,它的意思是把 User 的 name 字段改个名字叫 name_label,其相当于执行以下的 SQL 语句:SELECT users.name AS name_labelFROM users6.除了给映射类字段起别名,我们还可以给映射类起个别名:#Queryi

6、ng with aliasedfrom sqlalchemy.orm import aliaseduser_alias=aliased(User,name=user_alias)for row in session.query(user_alias,user_alias.name).all():print row.user_alias这里要注意的是,我们引入了 aliased 函数,并且给 User 映射类起了个别名叫user_alias。然后我们就可以在 query 中使用这个别名了,它相当于是 User 对象。上面的代码相当于执行了以下 SQL 语句:SELECT user_alias.i

7、d AS user_alias_id, user_alias.name AS user_alias_name,user_alias.fullname AS user_alias_fullname, user_alias.password AS user_alias_passwordFROM users AS user_alias7.由于 query 的查询返回的是一个元组,所以我们可以利用 Python 对数组类对象进行“分片”的操作,来限制返回的结果集范围:#Querying with limit and offsetfor u in session.query(User).order_by

8、(User.id)1:3:print u这里我们对返回的结果加上了1:3,来限制返回的结果集范围。其执行相当于下面的 SQL语句:SELECT users.id AS users_id, users.name AS users_name,users.fullname AS users_fullname, users.password AS users_passwordFROM users ORDER BY users.idLIMIT ? OFFSET ?8.前面的查询都没有涉及到子查询,也就是 SQL 的 where 子句。在 SQLAlchemy 框架中,query 的子查询可以通过 fil

9、ter_by 来实现:#Qyering with filter byfor name, in session.query(User.name).filter_by(fullname=Ed Jones):print name上面的查询相当于要找出 User 映射表中 fullname 为Ed Jones的数据,其相当于执行了下面的 SQL 语句:SELECT users.name AS users_nameFROM usersWHERE users.fullname = ?9.除了 filter_by 之外,我们还可以使用 filter 方法,这种方式看起来更灵活,我们可以按照映射类对象的属性来

10、指定查询条件:#Querying with filterfor name, in session.query(User.name).filter(User.fullname=Ed Jones):print name其参数与 filter_by 不同,这里使用了映射类名加属性字段的方式来指定查询子句参数,其相当于执行了下面的 SQL 语句:SELECT users.name AS users_nameFROM usersWHERE users.fullname = ?如果我们想要嵌套多个查询条件,可以嵌套多个 filter:#Querying with fully generativefor n

11、ame, in session.query(User.name).filter(User.fullname=Ed Jones).filter(User.name=ed):print name可以看到我们在 filter 方法后面又嵌套了一个 filter,理论上可以嵌套无数个,其相当于执行了下面的 SQL 语句:SELECT users.name AS users_nameFROM usersWHERE users.fullname = ? AND users.name = ?完整的示例代码如下:from sqlalchemy.ext.declarative import declarativ

12、e_basefrom sqlalchemy import Column,Integer,Stringfrom sqlalchemy import Sequencefrom sqlalchemy.orm import sessionmakerBase=declarative_base()from sqlalchemy import create_engineengine=create_engine(sqlite:/:memory:,echo=True)class User(Base):_tablename_=usersid=Column(Integer,Sequence(user_id_seq)

13、,primary_key=True)name=Column(String(50)fullname=Column(String(50)password=Column(String(12)def _init_(self,name,fullname,password):self.name=nameself.fullname=fullnameself.password=passworddef _repr_(self):return %(self.name,self.fullname,self.password)Base.metadata.create_all(engine)Session=sessio

14、nmaker(bind=engine)session=Session()#Add on usered_user=User(ed,Ed Jones,edpassword)session.add(ed_user)#Retrive saved ed_userour_user=session.query(User).filter_by(name=ed).first()print our_user is:,our_userprint our_user id is:,our_user.idprint our_user is ed_user,our_user=ed_user#Add multiple obj

15、ectsession.add_all(User(Wendy,Wendy Williams,foobar),User(Marry,Marry Contrary,xxg527),User(Fred,Fred Flinstone,blah)#Detective the dirty dataed_user.password=f8x902print Dirty data,session.dirty#Detective the new dataprint New data,session.new#Commit mit()#=Querying=#Querying user instancefor insta

16、nce in session.query(User).order_by(User.id):print instance.name,instance.fullname#Querying by ORM-instrumentfor name,fullname in session.query(User.name,User.fullname):print name,fullname#Querying as a Python objectfor row in session.query(User,User.name).all():print row.User,row.name#Querying labe

17、ledfor row in session.query(User.name.label(name_label).all():print (row.name_label)#Querying with aliasedfrom sqlalchemy.orm import aliaseduser_alias=aliased(User,name=user_alias)for row in session.query(user_alias,user_alias.name).all():print row.user_alias#Querying with limit and offsetfor u in s

18、ession.query(User).order_by(User.id)1:3:print u#Qyering with filter byfor name, in session.query(User.name).filter_by(fullname=Ed Jones):print name#Querying with filterfor name, in session.query(User.name).filter(User.fullname=Ed Jones):print name#Querying with fully generativefor name, in session.query(User.name).filter(User.fullname=Ed Jones).filter(User.name=ed):print namePython 标准函数库, SQLAlcehemy

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报