首页 > 代码库 > Python MySql 操作类

Python MySql 操作类

 Python 2.7

  暂时只用到这么多,以后用到其他的再补充。

# -*- coding:utf-8 -*-
import MySQLdb
import time

‘‘‘
· MySQL 操作类
· V1.0

‘‘‘
class MySQLClass(object):
    def __init__(self,host,user,password,charset="utf8"):
        super(MySQLClass, self).__init__()
        self.host=host
        self.user=user
        self.password=password
        self.port=3307  # 我这里MySql端口是3307,默认3306
        self.charset=charset
        try:
            self.conn=MySQLdb.connect(host=self.host,user=self.user,passwd=self.password,port=self.port)
            self.conn.set_character_set(self.charset)
            self.cur=self.conn.cursor()
        except MySQLdb.Error as e:
            self.printError(e,‘‘)
          
    def getTime(self):

        return time.strftime("%Y-%m-%d %H:%M:%S",time.localtime(time.time()))

    def printError(self,e,sql):
        print("{0} MySQl Error {1}: {2}".format(self.getTime(),e.args[0],e.args[1]))
        print(sql)

    def setdb(self,db):
        try:
            self.conn.select_db(db)
        except MySQLdb.Error as e:
            self.printError(e,‘‘)
    #新增
    def insert(self,tablename,DicData):
        try:
            arrParam=[]
            arrValue=[]
            for key in DicData:
                arrParam.append(‘%s‘)
                arrValue.append(DicData[key])
            strfield=‘`{0}`‘.format(‘`,`‘.join(DicData.keys()))
            strParam=‘values({0})‘.format(‘,‘.join(arrParam))
            sql=‘insert into {0}({1}) {2};‘.format(tablename,strfield,strParam)
            self.cur.execute(sql,tuple(arrValue)) # 单调新增
            self.conn.commit()
        except MySQLdb.Error as e:
            self.printError(e,sql)
        #self.conn.close()
    #批量新增
    def insertBatch(self,tablename,arrFiled,arrTupleValue):
        try:
            strfield = ‘`{0}`‘.format(‘`,`‘.join(arrFiled))
            arrParam=[]
            for x in arrFiled:
                arrParam.append(‘%s‘)
            strParam = ‘values({0})‘.format(‘,‘.join(arrParam))
            sql = ‘insert into {0}({1}) {2};‘.format(tablename, strfield, strParam)
            self.cur.executemany(sql,tuple(arrTupleValue)) #many 多条新增
            self.conn.commit()
        except MySQLdb.Error as e:
            self.printError(e,‘‘)
        #self.conn.close()
    #更新语句
    def update(self,sql):
        try:
            self.cur.execute(sql)
            self.conn.commit()
        except MySQLdb.Error as e:
            self.conn.rollback()
            self.printError(e,sql)
        #self.conn.close()

    #查询单个字段 返回List
    def executeList(self,sql):
        try:
            result=[]
            self.cur.execute(sql)
            ds=self.cur.fetchall()
            for i,row in enumerate(ds):
                result.append(str(row[0]))
            return result
        except MySQLdb.Error as e:
            self.printError(e,sql)


db=MySQLClass(‘127.0.0.1‘,‘root‘,‘123456‘)
db.setdb(‘test‘)
# arr=db.executeList(‘SELECT DISTINCT skuid from commodity‘)
# for x in arr:
#     print(x)
# table=db.insert(‘commodity‘,{‘title‘:‘10‘})
# db.conn.commit()
# arrTr={‘title‘:‘1‘}
# if ‘titl1e‘ in arrTr:
#     print (1)
# else:
#     print (0)

arrFiled = [‘name‘, ‘age‘]
arrValue=[‘1‘,‘2‘]

arrValueS=[]
arrValueS.append([1,‘1‘])

db.insertBatch(‘test‘,arrFiled,arrValueS)

Python MySql 操作类