热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

我应该为每个Sqlite3事务调用connect()和close()吗?

如何解决《我应该为每个Sqlite3事务调用connect()和close()吗?》经验,为你挑选了1个好方法。

我想编写一个Python模块来抽象出我的应用程序的数据库事务.我的问题是我是否需要打电话connect()close()每笔交易?在代码中:

import sqlite3

# Can I put connect() here?
cOnn= sqlite3.connect('db.py')

def insert(args):
    # Or should I put it here?
    cOnn= sqlite3.connect('db.py')
    # Perform the transaction.
    c = conn.cursor()
    c.execute(''' insert args ''')
    conn.commit()
    # Do I close the connection here?
    conn.close()

# Or can I close the connection whenever the application restarts (ideally, very rarely)
conn.close()

我对数据库的经验不多,所以我很欣赏为什么一种方法优于另一种方法的解释.



1> chepner..:

您可以重复使用相同的连接.您还可以使用连接(和游标)作为上下文管理器,这样您就不需要显式调用它们close.

def insert(conn, args):
    with conn.cursor() as c:
        c.execute(...)
    conn.commit()

with connect('db.py') as conn:
    insert(conn, ...)
    insert(conn, ...)
    insert(conn, ...)

没有理由关闭与数据库的连接,每次重新打开连接可能很昂贵.(例如,您可能需要建立TCP会话以连接到远程数据库.)


推荐阅读
  • Python使用SQLite1.sqlite3的安装python2.5.x以上版本默认自带sqlite3模块。2.链接sqlite3数据库```#导入sqlite3模块import ... [详细]
  • web.py开发web 第八章 Formalchemy 服务端验证方法
    本文介绍了在web.py开发中使用Formalchemy进行服务端表单数据验证的方法。以User表单为例,详细说明了对各字段的验证要求,包括必填、长度限制、唯一性等。同时介绍了如何自定义验证方法来实现验证唯一性和两个密码是否相等的功能。该文提供了相关代码示例。 ... [详细]
  • Python SQLAlchemy库的使用方法详解
    本文详细介绍了Python中使用SQLAlchemy库的方法。首先对SQLAlchemy进行了简介,包括其定义、适用的数据库类型等。然后讨论了SQLAlchemy提供的两种主要使用模式,即SQL表达式语言和ORM。针对不同的需求,给出了选择哪种模式的建议。最后,介绍了连接数据库的方法,包括创建SQLAlchemy引擎和执行SQL语句的接口。 ... [详细]
  • 合并列值-合并为一列问题需求:createtabletab(Aint,Bint,Cint)inserttabselect1,2,3unionallsel ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • ALTERTABLE通过更改、添加、除去列和约束,或者通过启用或禁用约束和触发器来更改表的定义。语法ALTERTABLEtable{[ALTERCOLUMNcolu ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • 在Oracle11g以前版本中的的DataGuard物理备用数据库,可以以只读的方式打开数据库,但此时MediaRecovery利用日志进行数据同步的过 ... [详细]
  • 本文介绍了在使用Laravel和sqlsrv连接到SQL Server 2016时,如何在插入查询中使用输出子句,并返回所需的值。同时讨论了使用CreatedOn字段返回最近创建的行的解决方法以及使用Eloquent模型创建后,值正确插入数据库但没有返回uniqueidentifier字段的问题。最后给出了一个示例代码。 ... [详细]
  • Easyui + asp.net mvc + sqlite 开发教程(录屏)适合入门
    第一节:前言(技术简介)EasyUI是一套js的前端框架利用它可以快速的开发出好看的前端系统web它是在jquery的框架基础上面现在越来越多的企业用它来开发web系统 ... [详细]
  • Java String与StringBuffer的区别及其应用场景
    本文主要介绍了Java中String和StringBuffer的区别,String是不可变的,而StringBuffer是可变的。StringBuffer在进行字符串处理时不生成新的对象,内存使用上要优于String类。因此,在需要频繁对字符串进行修改的情况下,使用StringBuffer更加适合。同时,文章还介绍了String和StringBuffer的应用场景。 ... [详细]
  • 州的先生(https:zmister.com)在很多项目中都有使用到SQLite数据库作为数据存储的工具,其中包括一些桌面图形界面程序和线上的Web应用程序。至今为止,它们都运行良 ... [详细]
  • 对于很多想做通讯录,或者很多想对系统通讯录操作的童鞋们肯定都会遇到个问题,系统通讯录操作很麻烦,我能不能直接看看底层联系人表结构呢?如果可以看到的话,那一定能提高相关操作的准确性和效率吧。  不多说, ... [详细]
  • iOS关于移动端SQLite,你想知道的都有
    一、SQLite简介SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它是D.RichardHipp建立的公有领域项目。它的设计目 ... [详细]
  • ImtryingtosetupavotingsysteminusingDjangothatlimitsaregisteredusertovotingonlyon ... [详细]
author-avatar
serafina捡到一枚人鱼
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有