使用生成器表达式高效过滤SQL表。
项目描述
此模块允许您使用Python构建查询,无需任何东西即可访问(DB API 2) SQL表
import re import sqlite3 from simpleql.table import Table conn = sqlite3.connect(":memory:") curs = conn.cursor() curs.execute("CREATE TABLE test (a integer, b char(1))") curs.executemany("INSERT INTO test (a, b) VALUES (?, ?)", ([1,'a'], [2,'b'], [3,'c'])) conn.commit() table = Table(conn, "test", verbose=1) for row in table: print row
这将打印
SELECT a, b FROM test; {'a': 1, 'b': u'a'} {'a': 2, 'b': u'b'} {'a': 3, 'b': u'c'}
请注意,表中的每一行都是一个字典。我们可以使用生成器表达式来过滤它
aspan = (1, 3) for row in (t for t in table if min(aspan) < t['a'] < max(aspan)): print row
这将打印
SELECT a, b FROM test WHERE (1<a) AND (a<3); {'a': 2, 'b': u'b'}
如您所见,查询字符串是从生成器表达式构建的。您还可以使用列表推导式。通过使用re.search方法,支持正则表达式
filtered = [t for t in table if re.search('a', t['b'])] print filtered
这将输出
SELECT a, b FROM test WHERE b LIKE "%a%"; [{'a': 1, 'b': u'a'}]
请注意,由于模块必须分析源代码,因此它不适用于交互式shell。
与类似菜谱相比,此方法的优点是,如果高效的查询构建器在遇到复杂过滤器时失败,数据仍然会通过生成器表达式(效率较低)进行过滤。
项目详情
下载文件
下载适合您平台的应用程序文件。如果您不确定选择哪个,请了解有关安装软件包的更多信息。
源代码分发
simpleQL-0.2.tar.gz (5.6 kB 查看哈希值)
构建分发版
simpleQL-0.2-py2.6.egg (12.8 kB 查看哈希值)
关闭
simpleQL-0.2.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | d6b1ec591068b1faa4500d12c76a71d04723cf5230f784dc3643b505090f6941 |
|
MD5 | bfb5ace31e94d9680134d835a500285a |
|
BLAKE2b-256 | 06382cef04b5ee06a10fdf746f5a31b7fece84420b6de745ec6491830854763e |
关闭
simpleQL-0.2-py2.6.egg 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 93228658b1f39ff2f36681dec26367c228d98ea91cccf5eb9b5e1e9be7824f16 |
|
MD5 | 0b59573ceea62b8c08f61bf91da8c04d |
|
BLAKE2b-256 | 71a684592535886f35b2140fc9510d7cff06c9a8659131929b4f5c44be0030a2 |