3. 光标(Cursor)可被用于迭代
你可能经常会看到应用fetchone或fetchall来处理 SELECT 萌芽结不雅的示例。然则我发明处理这些结不雅的最天然的方法是直接在光标上迭代:
如许一来,只要你获得足够的结不雅,你就可以终止萌芽,并且不会引起资本浪费。当然,如不雅事先知道你须要若干结不雅,可以改用 LIMIT SQL语句,但Python生成器是异常便利的,可以让你将数据生成与数据消费分别。
4. 应用Context Managers(高低文治理器)
即使在处理SQL事务的中心,也会产生憎恶的工作。为了避免手动处理回滚或提交,你可以简单地应用连接对象作为高低文治理器。 在以下示例中,我们创建了一个表,并缺点地插入了反复的值:
- import sqlite3
- connection = sqlite3.connect(':memory:')
- with connection:
- connection.execute(
- 'CREATE TABLE events(ts, msg, PRIMARY KEY(ts, msg))')
- try:
- with connection:
- connection.executemany('INSERT INTO events VALUES (?, ?)', [
- (1, 'foo'),
- (2, 'bar'),
- (3, 'baz'),
- (1, 'foo'),
- ])
- except (sqlite3.OperationalError, sqlite3.IntegrityError) as e:
- print('Could not complete operation:', e)
- # No row was inserted because transaction failed
- for row in connection.execute('SELECT * FROM events'):
- print(row)
推荐阅读
沙龙晃荡 | 去哪儿、陌陌、ThoughtWorks在主动化运维中的实践!10.28不见不散! 这个电脑法度榜样是Willem van Hoorn脑力劳动的产品。van Hoorn是应用人工智能设计药物的始创公司—&>>>详细阅读
地址:http://www.17bianji.com/lsqh/38253.html
1/2 1