DB API 2.0人类版

sql的Python项目详细描述


为什么?

DB API 2.0工作。orms很方便,但有时会过度杀戮。sql是 轻量级包装器位于提供 postgres类似的接口,使得使用sql结果非常方便。

怎么做?

>>> import sqlite3
>>> connection = sqlite3.connect(':memory:')
>>> import sql
>>> bliss = sql.SQL(connection)

运行

run是要运行查询但不关心 结果,例如创建表格:

>>> bliss.run("CREATE TABLE contributors (firstname VARCHAR, lastname VARCHAR)")
>>> bliss.run("INSERT INTO contributors VALUES (?, ?)", [('Andrew', 'Kuchling'),
...                                                      ('James', 'Henstridge'),
...                                                      ('Daniele', 'Varrazzo'),
...                                                      ('Marc-Andre', 'Lemburg')])

到目前为止,创建一个游标并调用executemany并没有什么了不起的成就 同样的结果。

一个

one是当您知道结果是一行或只关心结果时使用的方法 大约一个。

>>> 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')

全部

all是用于从查询中检索所有行的方法。

>>> bliss.all("SELECT firstname FROM contributors") #doctest: +SKIP
[u'Andrew', u'James', u'Daniele', u'Marc-Andre']

它会在适当的时候返回一个名为duples的列表:

>>> 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)]

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java使用jstl比较jsp中的日期对象   java JSF convertDateTime渲染前一天   java当重定向回另一个servlet时,如何显示错误消息?   当ulimit已更改为unlimit时,java无法增加Wildfly的“最大打开文件数”   Java和SWT:线程和侦听器   Java文件API跨网络复制文件   java如何使用闹钟。安卓系统中的动作\解除\警报   java无法将BLOB保存到数据库(ORA01460:未实现或不需要有意义的转换)   这个for循环的java复杂性   多行上的java正则表达式   spring mvc Java多URL模式,无扩展   java 安卓 json向文本添加超链接   Java泛型和转换   JavaSpringFramework。数据存储库。反应性。反应性积存。save()在从CompletableFuture调用时不持久化数据。运行异步   java ValidationException:调用TraversableResolver。isReachable()引发了异常   java将位图设置为具有特定高度的ImageView   Java:限制字符串中的字符   如何在java中将字节[]类型转换为证书类型?   javascript使用基于java的逻辑编写TinyMCE自定义插件