01-python操作Mysql資料庫

weixin_34208283發表於2018-04-20

python運算元據庫流程:
--建立資料庫連線 Conn=pymysql.connect()
--建立遊標cur=Conn.cursor()
--遊標下執行sql cur.execute(sql)
--提交遊標資料到資料庫conn.commit()
--關閉遊標cur.close()
--關閉資料庫conn.close()

例項

例項1:建立資料庫連線

import pymysql,re,logging,os

class OperationDb_interface(object):

def __init__(self):

self.conn=pymysql.connect(host='localhost', user='root',passwd='*****',db='my_test',port=3306,charset='utf8')#建立資料庫連結

self.cur=self.conn.cursor()#建立遊標

例項2:查詢單條語句

 def selectOne(self,condition):
      try:
         self.cur.execute(condition)#遊標下執行sql
         results=self.cur.fetchone()#獲取一條結果
      except pymysql.Error,e:
         results="sql0001"#資料庫執行錯誤
         print"Mysql Error %d:%s"% (e.args[0],e.args[1])
         logging.basicConfig(filename=os.path.join(os.getcwd(),'./log.txt'),
             level=logging.DEBUG,format='%(asctime)s %(filename)s[line:%(lineno)d] % (levelname)s %(message)s')
         logger =logging.getLogger(__name__)
         logger.exception(e)
      finally:
         return  results

例項3:查詢多條語句

   def selectAll(self,condition):
       try:
           self.cur.execute(condition)
           self.cur.scroll(0,mode='absolute')#游標回到初始位置
           result=self.cur.fetchall()#返回遊標中所有結果
       except pymysql.Error,e:
           result='sql0001'#資料庫執行錯誤
           print "Mysql Error %d:%s" % (e.args[0],e.args[1])
           logging.basicConfig(filename=os.path.join(os.getcwd(),'./log.txt'),
                level=logging.DEBUG,format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s % (message)s')
           logger=logging.getLogger(__name__)
           logger.exception(e)
       finally:
           return  result

例項4:定義插入多條語句資料庫操作

   def insertMore(self,condition,params):#對應的params是個tuple或list
      try:
         self.cur.executemany(condition,params)
         self.conn.commit()#提交遊標資料到資料庫
         return True
      except pymysql.Error,e:
         results='sql001'#資料庫執行錯誤
         print "Mysql Error %d:%s"%(e.args[0],e.args[1])
         logging.basicConfig(filename=os.path.join(os.getcwd(),'/log.txt'),
                 level=logging.DEBUG,format='%(asctime)s%(filename)s %(filename)s[line:%(lineno)d]% (levelname)s%(message)s' )
         logger=logging.getLogger(__name__)
         logger.exception(e)
         return  False

關閉資料庫

 def __del__(self):
          if self.cur !=None:
             self.cur.close()#關閉遊標
          if self.conn !=None:
             self.conn.close()#關閉資料庫連結
if __name__=="__main__":
   test=OperationDb_interface()#例項化類
   result=test.selectAll("select * from student")
   #result=test.insertMore("insert  into student VALUES (%s,%s);",(('003','zhaogang'),('004','Angelia'))) #對應的params是個tuple或list
   print (result)

相關文章