作家
登录

让Python更加充分的使用Sqlite3

作者: 来源: 2017-10-26 14:03:31 阅读 我要评论

'INSERT INTO events VALUES (?,?)'
  •     [ 
  •         (1, 'foo'), 
  •         (2, 'bar'), 
  •         (3, 'baz'
  •     ] 
  •  
  • # Print inserted rows 
  • for row in connnection.execute('SELECT * FROM events'): 
  •     print(row) 
  • 3. 光标(Cursor)可被用于迭代

    你可能经常会看到应用fetchone或fetchall来处理 SELECT 萌芽结不雅的示例。然则我发明处理这些结不雅的最天然的方法是直接在光标上迭代:

    如许一来,只要你获得足够的结不雅,你就可以终止萌芽,并且不会引起资本浪费。当然,如不雅事先知道你须要若干结不雅,可以改用 LIMIT SQL语句,但Python生成器是异常便利的,可以让你将数据生成与数据消费分别。

    4. 应用Context Managers(高低文治理器)

    即使在处理SQL事务的中心,也会产生憎恶的工作。为了避免手动处理回滚或提交,你可以简单地应用连接对象作为高低文治理器。 在以下示例中,我们创建了一个表,并缺点地插入了反复的值:

    1. import sqlite3 
    2. connection = sqlite3.connect(':memory:'
    3.  
    4. with connection
    5.     connection.execute
    6.         'CREATE TABLE events(ts, msg, PRIMARY KEY(ts, msg))'
    7.  
    8. try: 
    9.     with connection
    10.         connection.executemany('INSERT INTO events VALUES (?, ?)', [ 
    11.             (1, 'foo'), 
    12.             (2, 'bar'), 
    13.             (3, 'baz'), 
    14.             (1, 'foo'), 
    15.         ]) 
    16. except (sqlite3.OperationalError, sqlite3.IntegrityError) as e: 
    17.     print('Could not complete operation:', e) 
    18.      
    19. No row was inserted because transaction failed 
    20. for row in connection.execute('SELECT * FROM events'): 
    21.     print(row) 

        推荐阅读

        机器学习和大数据正帮助化学家搜寻药物

      沙龙晃荡 | 去哪儿、陌陌、ThoughtWorks在主动化运维中的实践!10.28不见不散! 这个电脑法度榜样是Willem van Hoorn脑力劳动的产品。van Hoorn是应用人工智能设计药物的始创公司—&>>>详细阅读


      本文标题:让Python更加充分的使用Sqlite3

      地址:http://www.17bianji.com/lsqh/38253.html

    关键词: 探索发现

    乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

    网友点评
    自媒体专栏

    评论

    热度

    精彩导读
    栏目ID=71的表不存在(操作类型=0)