鍍金池/ 問答/數(shù)據(jù)庫/ mysql conn執(zhí)行后 需要每次關(guān)閉cursor么?

mysql conn執(zhí)行后 需要每次關(guān)閉cursor么?

獲取一個conn,

需執(zhí)行多條命令,

每次執(zhí)行一個sql后需要關(guān)閉cursor么?

回答
編輯回答
爆扎

可以一次執(zhí)行多條。用python來舉個栗子

import MySQLdb as mdb
import sys

conn = mdb.connect(host = 'localhost', user = 'root', passwd = '123456', db = 'test')
 
 cur = conn.cursor()
cur.execute("insert into contact values('key1', 'value1')")
cur.execute("select * from test")
row_num = int(cur.rowcount)
for i in range(row_num):
     row = cur.fetchone()
     print row
 #在數(shù)據(jù)操作完成之后,進行commit,完成數(shù)據(jù)庫的數(shù)據(jù)更新
 conn.commit()
 cur = conn.cursor()
 conn.close()

此問題與MySQL的存儲引擎對事務的支持有關(guān)。 MySQL中有多種類型的存儲引擎, 例如: MyISAM, InnoDB等。 MyISAM不支持事務處理, 而InnoDB是事務型數(shù)據(jù)庫, 支持事務。比如InnoDB引擎, 所以對數(shù)據(jù)庫數(shù)據(jù)的操作會在事先分配的緩存中進行, 只有在commit之后, 數(shù)據(jù)庫的數(shù)據(jù)才會改變。

2018年4月28日 06:37
編輯回答
柒槿年

一般是給數(shù)據(jù)庫連接池來操作每個連接實例的開和閉
如果是自己獲取的話,在方法執(zhí)行最后,最好關(guān)閉。

2018年6月13日 08:51