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

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

獲取一個(gè)conn,

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

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

回答
編輯回答
爆扎

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

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ù)操作完成之后,進(jìn)行commit,完成數(shù)據(jù)庫(kù)的數(shù)據(jù)更新
 conn.commit()
 cur = conn.cursor()
 conn.close()

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

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

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

2018年6月13日 08:51