python3.0 django mysql連接池說明


使用python的django框架連接數據庫,操作數據庫代碼:

import logging
from django.db import connection

LOG = logging.getLogger("boss")

def dictfetchall(cursor):
"Return all rows from a cursor as a dict"
desc = cursor.description
if desc == None:
return []
columns = [col[0] for col in desc]
# for row in cursor.fetchall():
# rows.append(row)
return [
dict(zip(columns, row))
for row in cursor.fetchall()
]

def dictfetone(cursor):
desc = cursor.description
if desc == None:
return None
columns = [col[0] for col in desc]
row = cursor.fetchone()
if row == None:
return None
return dict(zip(columns,row))


def fetchall(sql,params=[]):
cursor =connection.cursor()
cursor.execute(sql,params)
ret = dictfetchall(cursor)
return ret


def fetchone(sql,params=[]):
cursor =connection.cursor()
cursor.execute(sql,params)
ret = dictfetone(cursor)
cursor.close()
return ret

def executeDb(sql,params=[]):
cursor =connection.cursor()
ret = cursor.execute(sql,params)
cursor.close()
return ret
在代碼中看到 cursor執行完之后,執行close。想到diango的mysql連接是不是沒有做連接池?帶着這個疑問上網查看,發現果然有這方面的文檔。后來看官網時發現:

django最新版本已經包含了連接池,通過修改配置控制,官方文檔:https://docs.djangoproject.com/en/1.9/ref/databases/

證明最好還是看官方文檔。微笑


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com