#Sora#peewee plus celery = ?
2019独角兽企业重金招聘Python工程师标准>>>
最近疯看全职猎人
初步学习了peewee,因为sqlalchemy实在是太重量级,文档也太恶心,peewee上手容易得多,也非常light
结合celery和peewee,写了点东西,查询年龄
myapp/db.py:
from __future__ import absolute_import
from myapp.celery import app
from peewee import *db = SqliteDatabase('people.db')
class Person(Model):name = CharField()age = IntegerField()class Meta:database = db@app.task
def agequery(name):db.connect()# collection = []for i in Person.select().where(Person.name == name):return {'name':name,'age':i.age}# collection.append({'name':name,'age':i.age})# return collectiondb.close()@app.task
def savedata(message):db.connect()newdata = Person.create(name=message.get('name'),age=message.get('age'))newdata.save()db.close()@app.task
def initdb():db.connect()db.create_tables([Person,])db.close()
测试用例:
Python 2.7.6 (default, Mar 22 2014, 22:59:56)
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from myapp.db import savedata,agequery
>>> res = agequery('miaoting')
>>> res = agequery.delay('miaoting')
>>> res.get()
{u'age': 17, u'name': u'miaoting'}
>>> savedata({'name':'Jc','age':65})
>>> savedata.delay({'name':'Jc','age':65})
<AsyncResult: c6d06e50-42b3-42a1-b06b-2561eb0c64af>
>>> res = agequery.delay('Jc')
>>> res.get()
{u'age': 65, u'name': u'Jc'}
>>> savedata.delay({'name':'FanShu','age':99})
<AsyncResult: a348b074-a6f1-430c-af78-42d8e29cf4e6>
>>> res = agequery.delay('Fanshu')
>>> res.get()
>>> res = agequery.delay('Jc')
>>> res.get()
{u'age': 65, u'name': u'Jc'}
>>> res = agequery.delay('Fanshu')
>>> res.get()
>>> res = agequery.delay('FanShu')
>>> res.get()
第一次使用db时要用initdb初始化,除非删除sqlite数据库,否则只需调用savedata和agequery
peewee笔记:
peewee 学习:
在peewee中,一个继承model类的类定义为某个数据库的一个表格
类中的feild,为数据库的列(字段)
一个model类实例则是一行
example:
from peewee import *
db = SqliteDatabase('people.db')
class Person(Model):
name = CharField()
birthday = DateField()
is_relative = BooleanField()
class Meta:
database = db # This model uses the "people.db" database.
class Pet(Model):
owner = ForeignKeyField(Person, related_name='pets')
name = CharField()
animal_type = CharField()
class Meta:
database = db # this model uses the "people.db" database
db.connect()
db.create_tables([Person, Pet])
保存数据:
>>> from datetime import date
>>> uncle_bob = Person(name='Bob', birthday=date(1960, 1, 15), is_relative=True)
>>> uncle_bob.save() # bob is now stored in the database
1
>>> bob_kitty = Pet.create(owner=uncle_bob, name='Kitty', animal_type='cat')
>>> herb_fido = Pet.create(owner=herb, name='Fido', animal_type='dog')
>>> herb_mittens = Pet.create(owner=herb, name='Mittens', animal_type='cat')
>>> herb_mittens_jr = Pet.create(owner=herb, name='Mittens Jr', animal_type='cat')
删除数据:
>>> herb_mittens.delete_instance() # he had a great life
1
查询数据(根据类的feild访问相关字段的数据):
>>> grandma = Person.select().where(Person.name == 'Grandma L.').get()
>>> grandma = Person.get(Person.name == 'Grandma L.')
列出所有记录:
>>> for person in Person.select():
... print person.name, person.is_relative
...
Bob True
Grandma L. True
Herb False
比较两种查询的区别:
>>> query = Pet.select().where(Pet.animal_type == 'cat')
>>> for pet in query:
... print pet.name, pet.owner.name
...
Kitty Bob
Mittens Jr Herb
>>> query = (Pet
... .select(Pet, Person)
... .join(Person)
... .where(Pet.animal_type == 'cat'))
>>> for pet in query:
... print pet.name, pet.owner.name
...
Kitty Bob
Mittens Jr Herb
后者的效率更高,后者不做无谓查询
转载于:https://my.oschina.net/hochikong/blog/469161
#Sora#peewee plus celery = ?相关推荐
- #Sora#peewee管理数据库——笔记
2019独角兽企业重金招聘Python工程师标准>>> 终于来到sora开发准备的最后部分 peewee 管理数据库 1.明确地管理数据库连接(也可以考虑使用连接池) databas ...
- #Sora#peewee query 笔记
2019独角兽企业重金招聘Python工程师标准>>> 这部分是query相关的笔记: peewee----查询 1.创建单条记录(有多种方法): 准备: >>> ...
- Celery介绍和使用
目录 1.为什么使用Celery? 2. Celery介绍 3. 创建Celery实例并加载配置 4. 定义发送短信任务 5.启动Celery服务 6. 调用发送短信任务 1.为什么使用Celery? ...
- celery mysql 异步_celery配合rabbitmq任务队列实现任务的异步调度执行[celery redis]
前言: 51cto的文章已经不再补充更新了,另外celery rabbitmq详细的使用方法请到这里浏览. http://xiaorui.cc/2014/11/16/celery-rabbitmq%E ...
- python celery应用场景_Celery使用背景与功能概要
Celery使用背景与功能概要 2018-03-28T00:35:49 532 0 0 #### Celery是Python开发的分布式任务调度模块. #### 本系列文章将详细讲解Celery的各种 ...
- python消息队列celery_消息队列(kafka/nsq等)与任务队列(celery/ytask等)到底有什么不同?...
写这篇博文的起因是,我在论坛宣传我开源的新项目YTask(go语言异步任务队列)时,有小伙伴在下面回了一句"为什么不用nsq?".这使我想起,我在和同事介绍celery时同事说了一 ...
- python asyncio和celery对比_如何将Celery与asyncio结合? - python
如何创建使芹菜任务看起来像asyncio.Task的包装器?还是有更好的方法将Celery与asyncio集成? @ asksol,Celery的创建者said this:: 使用Celery作为异步 ...
- peewee创建mysql_python – peewee MySQL,如何创建包装SQL构建的ins的自定义字段类型?...
我想在peewee(通过 MySQL)创建一个自定义UUID字段. 在python中,我使用UUID作为一个六角形字符串,例如: uuid ='110e8400-e29b-11d4-a716-4466 ...
- python asyncio和celery对比_如何将Celery与asyncio结合起来?
如何创建一个使芹菜任务看起来像asyncio.Task的包装器?或者是否有更好的方法将Celery与asyncio集成? @asksol,Celery的创始人,said this:: It's qui ...
最新文章
- ASP.NET MVC自定义ActionResult实现文件压缩
- xebium周末启动_我如何在周末建立和启动聊天机器人
- 计算机里面的百度云怎么弄消失,我换了个手机登录我的百度网盘,里面存的东西都不见了,谁能告诉我怎么弄回来么...
- ubuntu16.04卡在了’SMBus Host Controller not enabled‘
- TCP 三次握手 / 四次挥手
- H5添加QQ好友的链接
- 1.3 字符串的全排列
- SQL Server 2008,三年等待物有所值
- WinCC界面中通过插件打开pdf文件
- 基于STM32的鱼塘远程监测系统
- linux3.6.7在ok6410平台的移植3,ok6410移植uboot2012.10一直在Starting kernel
- /etc/yum.repos.d及repo文件解析
- STM32学习心得二十一:实时时钟RTC和备份寄存器BKP特征、原理及相关实验代码解读
- 解决在MAC上输入法切换慢的问题
- wpf中图片滚动效果demo_如何将商品视觉化运用到店铺中?小型文具店货架效果图文具店货架图片...
- Python爬虫入门(四):实战,爬取4399小游戏首页
- android x86 修改器,烧饼修改器x86专属版
- 极客时间和极客学院_极客和书呆子之间的区别
- BP或FI12维护银行账户,报错“银行帐户编号XXX必须具有长度 18”
- 管理类联考计算机,管理类联考逻辑能力提高有法可循_计算机专业考研
热门文章
- t6文件服务器怎么设置,t6文件服务器设置
- everything搜到不到文件的设置问题
- 一篇文章让你搞懂Mysql InnoDB内存结构
- 免费的且功能强大的截屏软件---Snipaste
- NTFS、FAT32、exFAT这三种格式的区别
- 20155305乔磊2016-2017-2《Java程序设计》第一周学习总结
- EasyPark共享停车位的设计与实现
- url地址的图片路径
- 保险的第一性原理——新保险
- 3GPP TS 29244-g30 中英文对照 | 5.4.5	DL Flow Level Marking for Application Detection