贡献一个python 连接mysql的操作。。。
#-*- coding:utf-8 -*-
import MySQLdb
def connect_db(host, port, user, password, db):
try:
conn = MySQLdb.connect(
host=host,
port=port,
user=user,
passwd=password,
db=db,
use_unicode=True,
charset='utf8',
connect_timeout=2,
cursorclass=MySQLdb.cursors.DictCursor)
return conn
except Exception, e:
print "Fatal: connect db fail:%s" % e
return None
class DB(object):
def __init__(self, host, port, user, password, db):
self.host = host
self.port = port
self.user = user
self.password = password
self.db = db
self._conn = connect_db(host, port, user, password, db)
def connect(self):
self._conn = connect_db(self.host, self.port, self.user, self.password, self.db)
return self._conn
def execute(self, *a, **kw):
cursor = kw.pop('cursor', None)
try:
cursor = cursor or self._conn.cursor()
cursor.execute(*a, **kw)
except (AttributeError, MySQLdb.OperationalError):
self._conn and self._conn.close()
self.connect()
cursor = self._conn.cursor()
cursor.execute(*a, **kw)
return cursor
def commit(self):
if self._conn:
try:
self._conn.commit()
except MySQLdb.OperationalError:
self._conn and self._conn.close()
self.connect()
self._conn and self._conn.commit()
def rollback(self):
if self._conn:
try:
self._conn.rollback()
except MySQLdb.OperationalError:
self._conn and self._conn.close()
self.connect()
self._conn and self._conn.rollback()
上面这段使用的时候直接写sql就好。
query = "select distinct %s from physics_list" % (key)
cursor = DB.execute(query)
rows = cursor.fetchall() # cursor.fetchone() 查询一行数据
cursor and cursor.close()
print rows