面向人类的DB API 2.0
项目描述
为什么?
DB API 2.0 可以工作。ORM很有用,但有时过于冗余。《sql》是一个轻量级包装器,位于任何DB API 2.0连接之上,提供类似 postgres 的接口,使得处理SQL结果变得愉快。
如何?
>>> import sqlite3 >>> connection = sqlite3.connect(':memory:')
>>> import sql >>> bliss = sql.SQL(connection)
运行
运行 是当您想要运行一个查询但不关心结果时使用的方法,例如创建一个表
>>> bliss.run("CREATE TABLE contributors (firstname VARCHAR, lastname VARCHAR)") #doctest: +ELLIPSIS <sql.SQL object ...> >>> bliss.run("INSERT INTO contributors VALUES (?, ?)", [('Andrew', 'Kuchling'), ... ('James', 'Henstridge'), ... ('Daniele', 'Varrazzo'), ... ('Marc-Andre', 'Lemburg')]) #doctest: +ELLIPSIS <sql.SQL object ...>
到目前为止,没有什么令人印象深刻,创建一个游标并调用executemany就能达到相同的结果。
提交
添加于版本 2022.4.0
>>> bliss.run("INSERT INTO contributors VALUES (?, ?)", ("Chad", "Whitacre")) #doctest: +ELLIPSIS <sql.SQL object ...> >>> bliss.commit()
仅仅因为它比 bliss.connection.commit() 短
运行 返回self,因此 提交 可以链式调用
>>> bliss.run("INSERT INTO contributors VALUES (?, ?)", ("Guido", "van Rossum")).commit()
一个
一个 是当您知道结果是单行或只关心一行时使用的方法。
>>> bliss.one("SELECT firstname FROM contributors WHERE lastname='Lemburg'") # doctest: +SKIP u'Marc-Andre'
这只是字符串,在我眼里胜过
>>> cursor = connection.cursor() >>> cursor.execute("SELECT firstname FROM contributors WHERE lastname='Lemburg'") # doctest: +ELLIPSIS <sqlite3.Cursor object at ...> >>> cursor.fetchone() # doctest: +SKIP (u'Marc-Andre',)
更好的是,如果结果包含多个列,一个 返回一个 namedtuple
>>> bliss.one("SELECT * FROM contributors WHERE firstname='James'") # doctest: +SKIP Record(firstname=u'James', lastname=u'Henstridge')
所有
所有 是用于检索查询中所有行的方法。
>>> bliss.all("SELECT firstname FROM contributors") #doctest: +SKIP [u'Andrew', u'James', u'Daniele', u'Marc-Andre']
当适用时返回名为tuples的列表
>>> bliss.all("SELECT firstname, LENGTH(lastname) AS length FROM contributors") # doctest: +NORMALIZE_WHITESPACE +SKIP [Record(firstname=u'Andrew', length=8), Record(firstname=u'James', length=10), Record(firstname=u'Daniele', length=8), Record(firstname=u'Marc-Andre', length=7)]
项目详情
关闭
sql-2022.4.0.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | f8cae71ac27e8bf763c4313497ba68f7e6ec577a1eb997738aaad3b3d5f7a600 |
|
MD5 | 436ffebee9d8e9aca88cf30ce28c6138 |
|
BLAKE2b-256 | 55c35698668c0d767bbca80d19b8c49c937e2ffc087e5a82c954c463400c4fd3 |