相关疑难解决方法(0)

何时使用MySQLdb关闭游标

我正在构建一个WSGI Web应用程序,我有一个MySQL数据库.我正在使用MySQLdb,它提供了执行语句和获取结果的游标.获取和关闭游标的标准做法是什么?特别是,我的游标应该持续多久?我应该为每笔交易获得一个新光标吗?

我相信你需要在提交连接之前关闭光标.查找不需要中间提交的事务集是否有任何显着优势,这样您就不必为每个事务获取新游标?获得新游标是否有很多开销,或者这不是什么大不了的事?

python mysql mysql-python

76
推荐指数
4
解决办法
8万
查看次数

游标和连接对象之间的区别

我很困惑为什么python需要游标对象.我知道jdbc,那里的数据库连接非常直观但是在python中我与游标对象混淆了.另外,我怀疑在资源释放方面cursor.close()和connection.close()函数之间的区别是什么.

python python-db-api

20
推荐指数
3
解决办法
8442
查看次数

在 Python 中跨多个函数使用 MySQLdb 连接和游标的正确方法是什么

我对 Python 及其 MySQLdb 连接器有点陌生。我正在编写一个 API 来使用 RESTful 方法从数据库返回一些数据。在 PHP 中,我将连接管理部分封装在一个类中,充当 MySQL 查询的抽象层。

在 Python 中:

  • 我很早就在脚本中定义了连接: con = mdb.connect('localhost', 'user', 'passwd', 'dbname')

  • 然后,在所有后续方法中:

    import MySQLdb as mdb
    
    def insert_func():
    
    with con: 
    
    cur = con.cursor(mdb.cursors.DictCursor)
    cur.execute("INSERT INTO table (col1, col2, col3) VALUES (%s, %s, %s)", (val1, val2, val3) )
    
    rows = cur.fetchall()
    
    #do something with the results
    
    return someval
    
    Run Code Online (Sandbox Code Playgroud)

    等等。

  • 我使用mdb.cursors.DictCursor是因为我更喜欢能够以关联数组的方式访问数据库列。

现在问题开始出现:

  • 在一个函数中,我发出一个插入查询以创建一个具有唯一“groupid”的“组”。

  • 这个“组”有一个创建者。数据库中的每个用户都在表中他/她行的“组”列中保存一个 JSON 数组。

  • 因此,当我创建一个新组时,我想将 groupid 分配给创建它的用户。

  • 我使用类似的功能更新用户的记录。

  • 我已经将“插入”和“更新”部分包装在两个单独的函数定义中。

  • 我第一次运行脚本时,一切正常。

  • 第二次运行脚本时,脚本无休止地运行(我怀疑是由于与 MySQL 数据库的某些空闲连接)。

  • 当我使用 CTRL + …

python mysql-python

5
推荐指数
1
解决办法
1114
查看次数

在 SQLite 中关闭游标或连接有什么区别吗?

cur.close()完成数据库后,我一直在使用该命令:

import sqlite3

conn = sqlite3.connect('mydb')
cur = conn.cursor()
# whatever actions in the database
cur.close()
Run Code Online (Sandbox Code Playgroud)

但是,我只是在某些情况下看到了以下方法:

import sqlite3

conn = sqlite3.connect('mydb')
cur = conn.cursor()
# whatever actions in the database
cur.close()
conn.close()
Run Code Online (Sandbox Code Playgroud)

在官方文档中,有时光标关闭,有时连接关闭,有时两者兼而有之。

我的问题是:

  1. 有什么区别cur.close()conn.close()
  2. 完成后关闭一个就足够了吗(或者我必须关闭两个)?如果是这样,哪一种更可取?

python sqlite cursor

5
推荐指数
1
解决办法
1584
查看次数

标签 统计

python ×4

mysql-python ×2

cursor ×1

mysql ×1

python-db-api ×1

sqlite ×1