python操作mysql

Aug 7, 2015


原因

最近在学习python,尝试使用其操作mysql数据库


配置类

新建 mysqlpro.py 作为配置类:

#!/usr/bin/env python
#encoding=utf-8
#coding=utf-8

__des__='mysql数据库配置文件'
__author__='lin'

class MySQLPro:
	host='localhost'
	user='root'
	password='root'
	db='test'

操作类

新建 mysqlOperate.py 作为数据库操作类:

#!/usr/bin/env python
#encoding=utf-8
#coding=utf-8

__des__='mysql数据库操作文件'
__author__='lin'

import sys
import threading
import MySQLdb
from mysqlpro import MySQLPro

class mysql:
	conn = None
	db = None
	cur = None
	instance = None

	locker = threading.Lock()

	@staticmethod
	def _connect():
		if not mysql.conn:
			#获取数据库连接
			mysql.conn=MySQLdb.connect(host=MySQLPro.host,user=MySQLPro.user,passwd=MySQLPro.password,charset='utf8')
			#选择数据库
			mysql.db=mysql.conn.select_db(MySQLPro.db)
			#获取操作游标
			mysql.cur=mysql.conn.cursor()

	#初始化
	def __init__(self):
		reload(sys)
		sys.setdefaultencoding('utf-8')
		mysql._connect()

	#获取单例对象
	@staticmethod
	def getInstance():
		mysql.locker.acquire()
		try:
			if not mysql.instance:
				mysql.instance = mysql()
			return mysql.instance
		finally:
			mysql.locker.release()

	#执行sql
	def execute(self,sql):
		try:
			#执行
			self.cur.execute(sql)
			#提交事物
			self.conn.commit()
		except MySQLdb.Error,e:
			print "Mysql Error %d: %s" % (e.args[0], e.args[1])
		finally:
			#关闭连接
			self.cur.close()
			self.conn.close()

测试类

新建 mysqltest.py 作为测试类:

#!/usr/bin/env python
#encoding=utf-8
#coding=utf-8

__des__='mysql数据库测试文件'
__author__='lin'

from mysqlOperate import mysql
my=mysql.getInstance()
if my:
	my.execute("add/update/delete ...")

小结

该操作类适合增删改操作,查询操作类似。