跳转到主要内容

(SQLAlchemy - ORM) + Twisted = win

项目描述

alchimia 允许您使用大多数 SQLAlchemy-core API,但不允许您使用 ORM。

入门

from alchimia import wrap_engine

from sqlalchemy import (
    create_engine, MetaData, Table, Column, Integer, String
)
from sqlalchemy.schema import CreateTable

from twisted.internet.defer import inlineCallbacks
from twisted.internet.task import react


@inlineCallbacks
def main(reactor):
    engine = wrap_engine(reactor, create_engine("sqlite://"))

    metadata = MetaData()
    users = Table("users", metadata,
        Column("id", Integer(), primary_key=True),
        Column("name", String()),
    )

    # Create the table
    yield engine.execute(CreateTable(users))

    # Insert some users
    yield engine.execute(users.insert().values(name="Jeremy Goodwin"))
    yield engine.execute(users.insert().values(name="Natalie Hurley"))
    yield engine.execute(users.insert().values(name="Dan Rydell"))
    yield engine.execute(users.insert().values(name="Casey McCall"))
    yield engine.execute(users.insert().values(name="Dana Whitaker"))

    result = yield engine.execute(users.select(users.c.name.startswith("D")))
    d_users = yield result.fetchall()
    # Print out the users
    for user in d_users:
        print("Username: %s" % user[users.c.name])
    # Queries that return results should be explicitly closed to
    # release the connection
    result.close()

if __name__ == "__main__":
    react(main, [])

文档

文档全部在 Read the Docs 上。

限制

alchimia 展示 SQLAlchemy API 的能力存在一些限制。

  • 某些方法尚未实现。如果您提交错误报告,我们将实现它们!有关更多信息,请参阅 CONTRIBUTING.rst

  • SQLAlchemy 中的一些方法没有返回值,或者返回的值是我们无法控制的。由于大多数 alchimia API 基于返回 Deferred 实例,因此我们无法以有用的方式包装这些方法。幸运的是,许多这些方法有替代的拼写。有关详细信息,请参阅 文档

项目详情


下载文件

下载适用于您的平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源代码分发

alchimia-0.8.1.tar.gz (18.4 kB 查看哈希值)

上传时间 源代码

构建分发

alchimia-0.8.1-py2.py3-none-any.whl (6.5 kB 查看哈希值)

上传时间 Python 2 Python 3

由以下支持