Python操作mysql数据库实现增删查改功能的方法
本文实例讲述了Python操作mysql数据库实现增删查改功能的方法。分享给大家供大家参考,具体如下:
#coding=utf-8 importMySQLdb classMysql_Oper: def__init__(self,host,user,passwd,db): self.host=host self.user=user self.passwd=passwd self.database=db defdb_connecet(self): try: #连接 conn=MySQLdb.connect(host=self.host,user=self.user,passwd=self.passwd,db=self.database,charset="utf8") cursor=conn.cursor() exceptMySQLdb.Error,e: print"MysqlError%d:%s"%(e.args[0],e.args[1]) defdrop_table(self,table): try: #删除表 sql="droptableifexists"+table cursor.execute(sql) exceptMySQLdb.Error,e: print"MysqlError%d:%s"%(e.args[0],e.args[1]) defcreate_table(self,table): try: iftable=="dept": #创建 sql="createtableifnotexistsdept(deptnointprimarykey,dnamevarchar(50),locvarchar(50))" cursor.execute(sql) eliftable=="emp": sql=="createtableifnotexistsemp(empnoINTPRIMARYKEY,enameVARCHAR(50),jobVARCHAR(50),mgrINT,hiredateDATE,salDECIMAL(7,2),COMMDECIMAL(7,2),deptnoINT,locvarchar(50),CONSTRAINTfk_empFOREIGNKEY(mgr)REFERENCESemp(empno))" cursor.execute(sql) eliftable=="salgrade": sql="createtableifnotexistssalgrade(gradeINTPRIMARYKEY,losalINT,hisalINT)" cursor.execute(sql) eliftable=="stu": #创建 sql="createtableifnotexistsdept(sidINTPRIMARYKEY,snameVARCHAR(50),ageINT,ganderVARCHAR(10),provinceVARCHAR(50),tuitionINT)" cursor.execute(sql) else: printu"输入错误的表名,表明为dept、emp、salgrade、stu..." exceptMySQLdb.Error,e: print"MysqlError%d:%s"%(e.args[0],e.args[1]) definser_onedata_table(self,table): try: iftable=="dept": sql="insertintodeptvalues(%s,%s,%s)" param=(40,'caiwubu','wuhan') n=cursor.execute(sql,param) print'insert',n eliftable=="emp": sql="insertintoempvalues(%s,%s,%s,%s,%s,%s,%s,%s)" param=(1009,'aniu','dongshizhang',NULL,'2001-11-17',50000,NULL,10) n=cursor.execute(sql,param) print'insert',n eliftable=="salgrade": sql="insertintosalgradevalues(%s,%s,%s)" param=(1,7000,12000) n=cursor.execute(sql,param) print'insert',n eliftable=="stu": sql="insertintostuvalues(%s,%s,%s,%s,%s,%s)" param=('1','001','23','nan','beijing','1500') n=cursor.execute(sql,param) print'insert',n else: printu"输入错误的表名,表明为dept、emp、salgrade、stu..." exceptMySQLdb.Error,e: print"MysqlError%d:%s"%(e.args[0],e.args[1]) definser_muldata_table(self,table): try: iftable=="dept": sql="insertintodeptvalues(%s,%s,%s)" param=((10,'jiaoyanbu','beijing'),(20,'xuegongbu','shanghai'),(30,'xiaoshoubu','guangzhou')) n=cursor.executemany(sql,param) print'insert',n eliftable=="emp": sql="insertintoempvalues(%s,%s,%s,%s,%s,%s,%s,%s)" param=((1004,'liubei','jingli',1009,'2001-04-02',29750,NULL,20), (1006,'guanyu','jingli',1009,'2001-05-01',28500,NULL,30), (1008,'zhugeliang','fenxishi',1004,'2007-04-19',30000,NULL,20), (1013,'pang','fenxishi',1004,'2001-12-03',30000,NULL,20), (1002,'dai','xiaoshouyuan',1006,'2001-02-20',16000,3000,30), (1003,'tianzheng','xiaoshouyuan',1006,'2001-02-22',12500,5000,30), (1005,'xiexun','xiaoshouyuan',1006,'2001-09-28',12500,14000,30), (1010,'weiyixiao','xiaoshouyuan',1006,'2001-09-08',15000,0,30) ) n=cursor.executemany(sql,param) print'insert',n eliftable=="salgrade": sql="insertintosalgradevalues(%s,%s,%s)" param=((2,12010,14000),(3,14010,20000),(4,20010,30000),(5,30010,99990)) n=cursor.executemany(sql,param) print'insert',n eliftable=="stu": sql="insertintostuvalues(%s,%s,%s,%s,%s,%s)" param=(('2','002','25','nan','liaoning','2500'), ('3','003','22','nan','beijing','3500'), ('4','004','25','nan','beijing','1500'), ('5','005','23','nv','beijing','1000'), ('6','006','22','nv','shandong','2500'), ('7','007','21','nv','beijing','1600'), ('8','008','23','nan','beijing','3500'), ('9','009','23','nv','guangzhou','2500'), ('10','010','18','nan','shanxi','3500'), ('11','011','23','nan','hubei','4500'), ('12','011','24','nan','beijing','1500'), ('13','011','24','nan','liaoning','2500'), ('14','011','22','nan','beijing','3500'), ('15','011','25','nan','beijing','1500'), ('16','011','23','nv','beijing','1000'), ('17','011','22','nv','shandong','2500'), ('18','011','21','nv','beijing','1600'), ('19','011','23','nan','beijing','3500'), ('20','011','23','nv','guangzhou','2500'), ('21','011','18','nan','shanxi','3500'), ('22','011','23','nan','hubei','4500'), ('23','011','23','nan','beijing','1500'), ('24','011','25','nan','liaoning','2500'), ('25','011','22','nan','beijing','3500'), ('26','011','25','nan','beijing','1500'), ('27','011','23','nv','beijing','1000'), ('28','011','22','nv','shandong','2500'), ('29','011','21','nv','beijing','1600'), ('30','011','23','nan','beijing','3500'), ('31','011','23','nv','guangzhou','2500'), ('32','011','18','nan','shanxi','3500'), ('33','033','23','nan','hubei','4500'), ('34','034','23','nan','beijing','1500'), ('35','035','25','nan','liaoning','2500'), ('36','036','22','nan','beijing','3500'), ('37','037','25','nan','beijing','1500'), ('38','038','23','nv','beijing','1000'), ('39','039','22','nv','shandong','2500'), ('40','040','21','nv','beijing','1600'), ('41','041','23','nan','beijing','3500'), ('42','042','23','nv','guangzhou','2500'), ('43','043','18','nan','shanxi','3500'), ('44','044','23','nan','hubei','4500'), ('45','045','23','nan','beijing','1500'), ('46','046','25','nan','liaoning','2500'), ('47','047','22','nan','beijing','3500'), ('48','048','25','nan','beijing','1500'), ('49','049','23','nv','beijing','1000'), ('50','050','22','nv','shandong','2500'), ('51','051','21','nv','beijing','1600'), ('52','052','23','nan','beijing','3500'), ('53','053','23','nv','guangzhou','2500'), ('54','054','18','nan','shanxi','3500'), ('55','055','23','nan','hubei','4500') ) n=cursor.executemany(sql,param) print'insert',n else: printu"输入错误的表名,表明为dept、emp、salgrade、stu..." exceptMySQLdb.Error,e: print"MysqlError%d:%s"%(e.args[0],e.args[1]) defupdate_table(self,table,no,upno): try: iftable=="dept": #创建 sql="updatedeptsetdeptno=%swheredeptno="+no param=(upno) n=cursor.execute(sql,param) print'update',n eliftable=="emp": sql="updateempsetempno=%swhereempno="+no param=(upno) n=cursor.execute(sql,param) print'update',n eliftable=="salgrade": sql="updatesalgradesetgrade=%swheregrade="+no param=(upno) n=cursor.execute(sql,param) print'update',n eliftable=="stu": sql="updatestusetsname=%swheresname="+no param=(upno) n=cursor.execute(sql,param) print'update',n else: printu"输入错误的表名,表明为dept、emp、salgrade、stu..." exceptMySQLdb.Error,e: print"MysqlError%d:%s"%(e.args[0],e.args[1]) defquery_data(self,table): try: #查询 sql="select*from"+table n=cursor.execute(sql) printcursor.fetchall() forrowincursor.fetchall(): printrow forrinrow: printr exceptMySQLdb.Error,e: print"MysqlError%d:%s"%(e.args[0],e.args[1]) defdelete_data(self,table,no) try: iftable=="dept": sql="deletefromdeptwheredeptno=%s" param=(upno) n=cursor.execute(sql,param) print'delete',n eliftable=="emp": sql="deletefromempwhereempno=%s" param=(upno) n=cursor.execute(sql,param) print'delete',n eliftable=="salgrade": sql="deletefromsalgradewheregrade=%s" param=(upno) n=cursor.execute(sql,param) print'delete',n eliftable=="stu": sql="deletefromstuwheresname=%s" param=(upno) n=cursor.execute(sql,param) print'delete',n else: printu"输入错误的表名,表明为dept、emp、salgrade、stu..." exceptMySQLdb.Error,e: print"MysqlError%d:%s"%(e.args[0],e.args[1]) deldown_db(self): try: cursor.close() #提交 conn.commit() #关闭 conn.close() exceptMySQLdb.Error,e: print"MysqlError%d:%s"%(e.args[0],e.args[1]) mysqlDB=Mysql_Oper("127.0.0.1","root","root","exam") mysqlDB.db_connecet() mysqlDB.drop_table("dept") fortablein["dept","emp","salgrade","stu"] mysqlDB.create_table(table) mysqlDB.inser_onedata_table(table) mysqlDB.inser_muldata_table(table) mysqlDB.query_data(table) mysqlDB.down_db()
后期我会把数据整合到CSV文件中,操作CSV文件对数据进行操作
更多关于Python相关内容感兴趣的读者可查看本站专题:《Python+MySQL数据库程序设计入门教程》、《Python常见数据库操作技巧汇总》、《Python数学运算技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》
希望本文所述对大家Python程序设计有所帮助。