python sql 图片库_PyPika:Python语法风格的SQL处理库

PyPika

PyPika是一个用于构建SQL查询的Python API, PyPika库作者的动机是为构建SQL查询提供一个简单的界面。

在python中写sql语句体验不好,我们都是用字符串写的,写的过程中编辑器不会给咱们自动补全。

SELECT "id","fname","lname","phone" FROM "customers" ORDER BY "id" DESC

安装

pypika支持2.7和3.3+.python pip3 install pypika

Select Data

"""

#从customers表中提取相关信息

SELECT id,fname,lname,phone FROM customers

"""from pypika import Query,Table,Field

#创建用Table对象customers = Table('customers')#customers是对象,有相关的属性值q = Query.from_(customers).select(customers.id, customers.fname, customers.lname, customers.phone)#q = Query.from_('customers').select('id', 'fname', 'lname', 'phone')

增-Insert

"""

#单条数据插入

INSERT INTO customers VALUES (1,'Jane','Doe','jane@example.com')

"""customers = Table('customers')q = Query.into(customers).insert(1, 'Jane', 'Doe', 'jane@example.com')"""

#查入多条数据

INSERT INTO customers VALUES (1,'Jane','Doe','jane@example.com'),(2,'John','Doe','john@example.com')

"""customers = Table('customers')q = Query.into(customers).insert((1, 'Jane', 'Doe', 'jane@example.com'),

(2, 'John', 'Doe', 'john@example.com'))

更新-Update

"""

UPDATE "customers" SET "last_login"='2017-01-01 10:00:00'

UPDATE "customers" SET "lname"='smith' WHERE "id"=10

"""customers = Table('customers')Query.update(customers).set('last_login', '2017-01-01 10:00:00')Query.update(customers).set('lname', 'smith').where(customers.id == 10)

排序

"""

SELECT "id","fname","lname","phone" FROM "customers" ORDER BY "id" DESC

"""from pypika import Order

Query.from_('customers').select('id', 'fname', 'lname', 'phone').orderby('id', order=Order.desc)

四则算法

两个变量相减

"""

SELECT revenue-cost FROM accounts

"""from pypika import Field

q = Query.from_('account').select(

Field('revenue') - Field('cost'))#accounts = Table('accounts')#q = Query.from_(accounts).select( accounts.revenue - accounts.cost)

"""

#将两个变量相减得到的结果起个名字

SELECT revenue-cost profit FROM accounts

"""q = Query.from_(accounts).select(

(accounts.revenue - accounts.cost).as_('profit'))

更多的四则运算例子

"""

SELECT foo+bar,foo-bar,foo*bar,foo/bar,(foo+bar)/fiz FROM table

"""table = Table('table')q = Query.from_(table).select(

table.foo + table.bar,

table.foo - table.bar,

table.foo * table.bar,

table.foo / table.bar,

(table.foo+table.bar) / table.fiz)

1.4 IN/Between

"""

#where条件语句

SELECT id,fname,lname,phone FROM customers WHERE lname='Mustermann'

"""customers = Table('customers')q = Query.from_(customers).select(

customers.id, customers.fname, customers.lname, customers.phone).where(

customers.fname == 'Max').where(

customers.lname == 'Mustermann')

AND

"""

SELECT id,fname FROM customers WHERE age BETWEEN 18 AND 65 AND status IN ('new','active')

"""customers = Table('customers')q = Query.from_(customers).select(

customers.id,customers.fname).where(

customers.age[18:65] & customers.status.isin(['new', 'active']))

OR

"""

SELECT id,fname,lname,phone FROM customers WHERE age>=18 OR lname='Mustermann'

"""customers = Table('customers')q = Query.from_(customers).select(

customers.id, customers.fname, customers.lname, customers.phone).where(

(customers.age >= 18) | (customers.lname == 'Mustermann'))

Grouping &Aggregating

"""

SELECT id,SUM(revenue) FROM customers WHERE age>=18 GROUP BY id ORDER BY id ASC

"""from pypika import functions as fn

customers = Table('customers')q = Query.from_(customers).where(

customers.age >= 18).groupby(

customers.id).select(

customers.id, fn.Sum(customers.revenue))"""

SELECT customer_id,SUM(total) FROM payments

WHERE transacted BETWEEN '2015-01-01' AND '2016-01-01'

GROUP BY customer_id HAVING SUM(total)>=1000

"""from pypika import functions as fn

payments = Table('payments')q = Query.from_(payments).where(

payments.transacted[date(2015, 1, 1):date(2016, 1, 1)]).groupby(

payments.customer_id).having(

fn.Sum(payments.total) >= 1000).select(

payments.customer_id, fn.Sum(payments.total))

觉得有收获可以送支鹅毛信哦~(^_^)

历史文章:

数据采集

文本处理分析

图片数据处理

其他

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值