Gino不是ORM——一个基于SqlAlchemy核心的Python异步ORM。
gino的Python项目详细描述
基诺
gino-gino不是orm-是在 sqlalchemy python的核心 异步 。现在(2018年初)Gino只支持一个 方言
- 免费软件:BSD许可证
- 需要:python 3.5
功能
安装
pip install gino
展示
importasynciofromginoimportGinodb=Gino()classUser(db.Model):__tablename__='users'id=db.Column(db.Integer(),primary_key=True)nickname=db.Column(db.Unicode(),default='noname')asyncdefmain():awaitdb.set_bind('postgresql://localhost/gino')# Create tablesawaitdb.gino.create_all()# Create object, `id` is assigned by databaseu1=awaitUser.create(nickname='fantix')print(u1.id,u1.nickname)# 1 fantix# Returns all user objects with "d" in their nicknamesusers=awaitUser.query.where(User.nickname.contains('d')).gino.all()print(users)# [<User object>, <User object>]# Find one user object, None if not founduser=awaitUser.query.where(User.nickname=='daisy').gino.first()print(user)# <User object> or None# Execute complex statement and return command statusstatus,result=awaitUser.update.values(nickname='No.'+db.cast(User.id,db.Unicode),).where(User.id>10,).gino.status()print(status)# UPDATE 8# Iterate over the results of a large query in a transaction as requiredasyncwithdb.transaction():asyncforuinUser.query.order_by(User.id).gino.iterate():print(u.id,u.nickname)asyncio.get_event_loop().run_until_complete(main())
关于名称
关于吉诺的名字不是orm-因为我不太喜欢orm(微笑)。吉诺 是否在 数据映射器模式,但它不是传统的orm。中的对象 从数据库来看,基诺是完全无状态的——它们是纯纯python 内存中的对象。更改它们的属性值不会使它们变"脏"- 或者有点不同新台币认为他们总是"肮脏的"。任何访问 必须显式执行数据库。使用gino更像是编写sql 带有模型和对象的子句,执行它们以在数据库中进行更改,或 从数据库加载数据并再次用对象包装结果。物体 只是行数据容器,您仍在处理 由模型和sqlalchemy核心语法表示。如果你不喜欢的话 ORM,您可以使用不带ORM的Gino:
fromginoimportGinodb=Gino()user=db.Table('users',db,db.Column('id',db.BigInteger(),primary_key=True),db.Column('nickname',db.Unicode()),)asyncdefmain():asyncwithdb.with_bind('postgresql://localhost/gino'):users=awaitdb.select([user]).gino.all()print(users)importasyncioasyncio.get_event_loop().run_until_complete(main())
贡献
GitHub问题中有一些任务标记为需要帮助。请感觉 我们非常欢迎您免费接受任何请求和请求。
要运行测试(请阅读contribution.rst中的更多内容):
$ python setup.py test
同时,我们也非常感谢:
- 只需使用它,轻触星星并传播爱:)
- 告诉我你的故事: gino @ decentfox com
- 报告错误/问题,或请求新功能
- 雇用我 或 雇用我们 为您的工作(编码、咨询、故障排除)
- 成为赞助人
使用Gino的项目
- aintq -postgresql上的异步任务队列
- exchangeratesapi -带货币转换的外汇汇率api
学分
信用证归作者文件中列出或未列出的所有贡献者所有。这个 项目的灵感来源于异步pgsa、peewee async和异步格式。 asyncpg 和 sqlalchemy 依赖项完成了大部分繁重工作。这个包裹是 使用Cookiecutter和项目创建 模板。
特别感谢我的妻子戴西和她的外包公司。 为我提供了建设这个项目的机会。我们向全球开放 python、ios和android开发的软件项目外包。我们是 招聘 !