SqlAlchemy初探
SqlAlchemy是Python下的一个成熟的ORM框架。下面我们对他的使用做一个简略的介绍。
0.安装
如果有pip,使用pip安装,更便捷。pip install sqlalchemy
也可以下载包安装。python setup.py install
1.连接配置
>>> from sqlalchemy import create_engine
>>> engine = create_engine('sqlite:///:memory:', echo=True)
MySql的连库字符串:mysql+pymysql://<username>:<password>@<host>/<dbname>[?<options>]
2.模型配置
>>> from sqlalchemy.ext.declarative import declarative_base
>>> Base = declarative_base()
>>> from sqlalchemy import Column, Integer, String
>>> class User(Base):
... __tablename__ = 'users'
...
... id = Column(Integer, primary_key=True)
... name = Column(String)
... fullname = Column(String)
... password = Column(String)
...
... def __repr__(self):
... return "<User(name='%s', fullname='%s', password='%s')>" % (
... self.name, self.fullname, self.password) 创建一个模型的实例:
>>> ed_user = User(name='ed', fullname='Ed Jones', password='edspassword')
>>> ed_user.name
'ed'
>>> ed_user.password
'edspassword'
>>> str(ed_user.id)
'None'
3.数据查询
>>> from sqlalchemy.orm import sessionmaker
#两种建立session的方法:
>>> Session = sessionmaker(bind=engine)
#或者
>>> Session = sessionmaker()
>>> Session.configure(bind=engine) # once engine is available
3.1 普通查询
>>>session.query(user_alias, user_alias.name).all()/one()/first()
>>>session.query(user_alias, user_alias.name).filter(User.fullname=='Ed Jones').filter(User.age [>,<,==,>=,<==]25).all()
>>>query.filter(User.name == 'ed')
>>>query.filter(User.name != 'ed')
>>>query.filter(User.name.like('%ed%'))
>>>query.filter(User.name.in_(['ed', 'wendy', 'jack']))
>>>query.filter(~User.name.in_(['ed', 'wendy', 'jack']))
>>>query.filter(User.name == None)
>>>query.filter(User.name.is_(None))
>>>query.filter(User.name != None)
>>>query.filter(User.name.isnot(None))
>>>from sqlalchemy import and_
>>>query.filter(and_(User.name == 'ed', User.fullname == 'Ed Jones'))
>>>query.filter(User.name == 'ed', User.fullname == 'Ed Jones')
>>>query.filter(User.name == 'ed').filter(User.fullname == 'Ed Jones')
>>>from sqlalchemy import or_
>>>query.filter(or_(User.name == 'ed', User.name == 'wendy'))
>>>query.filter(User.name.match('wendy'))
3.2关联查询
用到时候再补上。
4.更改提交
SqlAlchemy初探的更多相关文章
- 初探领域驱动设计(2)Repository在DDD中的应用
概述 上一篇我们算是粗略的介绍了一下DDD,我们提到了实体.值类型和领域服务,也稍微讲到了DDD中的分层结构.但这只能算是一个很简单的介绍,并且我们在上篇的末尾还留下了一些问题,其中大家讨论比较多的, ...
- CSharpGL(8)使用3D纹理渲染体数据 (Volume Rendering) 初探
CSharpGL(8)使用3D纹理渲染体数据 (Volume Rendering) 初探 2016-08-13 由于CSharpGL一直在更新,现在这个教程已经不适用最新的代码了.CSharpGL源码 ...
- sqlalchemy学习
sqlalchemy官网API参考 原文作为一个Pythoner,不会SQLAlchemy都不好意思跟同行打招呼! #作者:笑虎 #链接:https://zhuanlan.zhihu.com/p/23 ...
- 从273二手车的M站点初探js模块化编程
前言 这几天在看273M站点时被他们的页面交互方式所吸引,他们的首页是采用三次加载+分页的方式.也就说分为大分页和小分页两种交互.大分页就是通过分页按钮来操作,小分页是通过下拉(向下滑动)时异步加载数 ...
- JavaScript学习(一) —— 环境搭建与JavaScript初探
1.开发环境搭建 本系列教程的开发工具,我们采用HBuilder. 可以去网上下载最新的版本,然后解压一下就能直接用了.学习JavaScript,环境搭建是非常简单的,或者说,只要你有一个浏览器,一个 ...
- .NET文件并发与RabbitMQ(初探RabbitMQ)
本文版权归博客园和作者吴双本人共同所有.欢迎转载,转载和爬虫请注明原文地址:http://www.cnblogs.com/tdws/p/5860668.html 想必MQ这两个字母对于各位前辈们和老司 ...
- tornado+sqlalchemy+celery,数据库连接消耗在哪里
随着公司业务的发展,网站的日活数也逐渐增多,以前只需要考虑将所需要的功能实现就行了,当日活越来越大的时候,就需要考虑对服务器的资源使用消耗情况有一个清楚的认知. 最近老是发现数据库的连接数如果 ...
- React Native初探
前言 很久之前就想研究React Native了,但是一直没有落地的机会,我一直认为一个技术要有落地的场景才有研究的意义,刚好最近迎来了新的APP,在可控的范围内,我们可以在上面做任何想做的事情. P ...
- 冰冻三尺非一日之寒-mysql(orm/sqlalchemy)
第十二章 mysql ORM介绍 2.sqlalchemy基本使用 ORM介绍: orm英文全称object relational mapping,就是对象映射关系程序,简单来说我们类似pyt ...
随机推荐
- xlistview的XML(头)xlistview_header
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android=" ...
- web安全测试-AppScan
安全测试应该是测试中非常重要的一部分,但他常常最容易被忽视掉. 尽管国内经常出现各种安全事件,但没有真正的引起人们的注意.不管是开发还是测试都不太关注产品的安全.当然,这也不能怪我们苦B的“民工兄弟” ...
- 苹果 Mac OS X Yosemite 10.10 新功能特性总结 - 扁平化、主打跨设备的无缝连通性
苹果在2014.06.03凌晨的 WWDC 2014 大会上正式发布了最新的 OS X Yosemite 桌面操作系统和 iOS 8 移动系统.虽然整场发布会的重心都在软件上,并没有硬件亮相,但软件上 ...
- win10系统输入法用户体验
因为现在的输入法好多的广告弹窗所以我一直用系统原生的输入法,自从去年升级win10以后一直在用自带的输入法, 1.用户界面设计 win10系统自带的输入法用户界面设计非常扁平化,没有哪些所谓的皮肤啥的 ...
- zoj1610 线段树
//Accepted 804 KB 40 ms //整个题,都是坑 //1.The first line of each data set contains exactly one integer n ...
- win10 mac地址修改器
NoVirus Thanks MAC Address Changer NoVirus Thanks MAC Address Changer is yet another simple MAC addr ...
- 修改主机名Ubuntu
主机名存放在/etc/hostname 修改保存即可
- Construct a basic automation test framework
Elements in an automation test framework: actor,---simulate trader, have its own name, can get contr ...
- Oracle数据库中char, varchar, nvarchar的差异
1. char 固定长度,最长n个字符. 2. varchar 最大长度为n的可变字符串. (n为某一整数,不同数据库,最大长度n不同) char和varchar区别: ...
- Objective-c---分类 、 扩展 、 ARC
1 分类练习 1.1 问题 分类是Objective-C提供的一种类的补充和扩展方法,补充和扩展的每个部分被称为分类,分类本质上是类的一部分.提出分类概念的作用有两个:一是分解大的代码,提高程序可读性 ...