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 = ?相关推荐

  1. #Sora#peewee管理数据库——笔记

    2019独角兽企业重金招聘Python工程师标准>>> 终于来到sora开发准备的最后部分 peewee 管理数据库 1.明确地管理数据库连接(也可以考虑使用连接池) databas ...

  2. #Sora#peewee query 笔记

    2019独角兽企业重金招聘Python工程师标准>>> 这部分是query相关的笔记: peewee----查询 1.创建单条记录(有多种方法): 准备: >>> ...

  3. Celery介绍和使用

    目录 1.为什么使用Celery? 2. Celery介绍 3. 创建Celery实例并加载配置 4. 定义发送短信任务 5.启动Celery服务 6. 调用发送短信任务 1.为什么使用Celery? ...

  4. celery mysql 异步_celery配合rabbitmq任务队列实现任务的异步调度执行[celery redis]

    前言: 51cto的文章已经不再补充更新了,另外celery rabbitmq详细的使用方法请到这里浏览. http://xiaorui.cc/2014/11/16/celery-rabbitmq%E ...

  5. python celery应用场景_Celery使用背景与功能概要

    Celery使用背景与功能概要 2018-03-28T00:35:49 532 0 0 #### Celery是Python开发的分布式任务调度模块. #### 本系列文章将详细讲解Celery的各种 ...

  6. python消息队列celery_消息队列(kafka/nsq等)与任务队列(celery/ytask等)到底有什么不同?...

    写这篇博文的起因是,我在论坛宣传我开源的新项目YTask(go语言异步任务队列)时,有小伙伴在下面回了一句"为什么不用nsq?".这使我想起,我在和同事介绍celery时同事说了一 ...

  7. python asyncio和celery对比_如何将Celery与asyncio结合? - python

    如何创建使芹菜任务看起来像asyncio.Task的包装器?还是有更好的方法将Celery与asyncio集成? @ asksol,Celery的创建者said this:: 使用Celery作为异步 ...

  8. peewee创建mysql_python – peewee MySQL,如何创建包装SQL构建的ins的自定义字段类型?...

    我想在peewee(通过 MySQL)创建一个自定义UUID字段. 在python中,我使用UUID作为一个六角形字符串,例如: uuid ='110e8400-e29b-11d4-a716-4466 ...

  9. python asyncio和celery对比_如何将Celery与asyncio结合起来?

    如何创建一个使芹菜任务看起来像asyncio.Task的包装器?或者是否有更好的方法将Celery与asyncio集成? @asksol,Celery的创始人,said this:: It's qui ...

最新文章

  1. ASP.NET MVC自定义ActionResult实现文件压缩
  2. xebium周末启动_我如何在周末建立和启动聊天机器人
  3. 计算机里面的百度云怎么弄消失,我换了个手机登录我的百度网盘,里面存的东西都不见了,谁能告诉我怎么弄回来么...
  4. ubuntu16.04卡在了’SMBus Host Controller not enabled‘
  5. TCP 三次握手 / 四次挥手
  6. H5添加QQ好友的链接
  7. 1.3 字符串的全排列
  8. SQL Server 2008,三年等待物有所值
  9. WinCC界面中通过插件打开pdf文件
  10. 基于STM32的鱼塘远程监测系统
  11. linux3.6.7在ok6410平台的移植3,ok6410移植uboot2012.10一直在Starting kernel
  12. /etc/yum.repos.d及repo文件解析
  13. STM32学习心得二十一:实时时钟RTC和备份寄存器BKP特征、原理及相关实验代码解读
  14. 解决在MAC上输入法切换慢的问题
  15. wpf中图片滚动效果demo_如何将商品视觉化运用到店铺中?小型文具店货架效果图文具店货架图片...
  16. Python爬虫入门(四):实战,爬取4399小游戏首页
  17. android x86 修改器,烧饼修改器x86专属版
  18. 极客时间和极客学院_极客和书呆子之间的区别
  19. BP或FI12维护银行账户,报错“银行帐户编号XXX必须具有长度 18”
  20. 管理类联考计算机,管理类联考逻辑能力提高有法可循_计算机专业考研

热门文章

  1. t6文件服务器怎么设置,t6文件服务器设置
  2. everything搜到不到文件的设置问题
  3. 一篇文章让你搞懂Mysql InnoDB内存结构
  4. 免费的且功能强大的截屏软件---Snipaste
  5. NTFS、FAT32、exFAT这三种格式的区别
  6. 20155305乔磊2016-2017-2《Java程序设计》第一周学习总结
  7. EasyPark共享停车位的设计与实现
  8. url地址的图片路径
  9. 保险的第一性原理——新保险
  10. 3GPP TS 29244-g30 中英文对照 | 5.4.5 DL Flow Level Marking for Application Detection