Python操作mysql数据库(封装基本的增删改查)

时间:2022-12-11 08:52:43

新学Python,在这里分享操作MySQL的全过程

1、安装MySQL-python-1.2.3.win-amd64-py2.7.exe,这是操作mysql数据库的python库,有32位和64位之分,看自机器下载

2、64位机器安装MySQL-python-1.2.3.win-amd64-py2.7.exe出现 which was not found the regidtry,请点这里

3、引入mysql库:

[python] view plain copy
  1. import MySQLdb  

4、获取数据库连接:

[python] view plain copy
  1. conn=MySQLdb.connect(host='localhost',user='mjy',passwd='123',db='python',port=3306,charset='utf8')  
 

connect连接对象的方法:

close()  --关闭的方法

commit()   --如果支持事务则提交挂起的事务

rollback()  --回滚挂起的事务

cursor()  --返回连接的游标对象

5、获取游标:

[python] view plain copy
  1. #该游标对象执行查询操作返回的结果是序列  
  2. cur=con.cursor()   
[python] view plain copy
  1. #该游标对象执行查询操作返回的结果是字典(字典可以方便我们队查询的结果进行操作,所以我采用这种方法)  
  2. cur=con.cursor(MySQLdb.cursors.DictCursor)    

游标对象的方法:

callproc(name,[params]) --用来执行存储过程,接收的参数为存储过程的名字和参数列表,返回受影响的行数

close()  --关闭游标

execute(sql,[params])--执行sql语句,可以使用参数,(使用参数时,sql语句中用%s进行站位注值),返回受影响的行数

executemany(sql,params)--执行单挑sql语句,但是重复执行参数列表里的参数,返回受影响的行数

fetchone()  --返回结果的下一行

fetchall()  --返回结果的 所有行

fetchmany(size)--返回size条记录,如果size大于返回结果行的数量,则会返回cursor.arraysize条记录

nextset()  --条至下一行

setinputsizes(size)--定义cursor

游标对象的属性:

description--结果列的描述,只读

rowcount  --结果中的行数,只读

arraysize  --fetchmany返回的行数,默认为1


6、我自己封装的一些基本操作

[python] view plain copy
  1. # -*- coding: cp936 -*-  
  2. import MySQLdb  
  3.   
  4. class MysqldbHelper:  
  5.     #获取数据库连接  
  6.     def getCon(self):  
  7.         try:  
  8.             conn=MySQLdb.connect(host='localhost',user='mjy',passwd='123',db='python',port=3306,charset='utf8')  
  9.             return conn  
  10.         except MySQLdb.Error,e:  
  11.             print "Mysqldb Error:%s" % e  
  12.     #查询方法,使用con.cursor(MySQLdb.cursors.DictCursor),返回结果为字典      
  13.     def select(self,sql):  
  14.         try:  
  15.             con=self.getCon()  
  16.             print con  
  17.             cur=con.cursor(MySQLdb.cursors.DictCursor)  
  18.             count=cur.execute(sql)  
  19.             fc=cur.fetchall()  
  20.             return fc  
  21.         except MySQLdb.Error,e:  
  22.             print "Mysqldb Error:%s" % e  
  23.         finally:  
  24.             cur.close()  
  25.             con.close()  
  26.     #带参数的更新方法,eg:sql='insert into pythontest values(%s,%s,%s,now()',params=(6,'C#','good book')  
  27.     def updateByParam(self,sql,params):  
  28.         try:  
  29.             con=self.getCon()  
  30.             cur=con.cursor()  
  31.             count=cur.execute(sql,params)  
  32.             con.commit()  
  33.             return count  
  34.         except MySQLdb.Error,e:  
  35.             con.rollback()  
  36.             print "Mysqldb Error:%s" % e  
  37.         finally:  
  38.             cur.close()  
  39.             con.close()  
  40.     #不带参数的更新方法  
  41.     def update(self,sql):  
  42.         try:  
  43.             con=self.getCon()  
  44.             cur=con.cursor()  
  45.             count=cur.execute(sql)  
  46.             con.commit()  
  47.             return count  
  48.         except MySQLdb.Error,e:  
  49.             con.rollback()  
  50.             print "Mysqldb Error:%s" % e  
  51.         finally:  
  52.             cur.close()  
  53.             con.close()  
  54.               
  55. if __name__ == "__main__":  
  56.     db=MysqldbHelper()   
  57.     def get():   
  58.         sql="select * from pythontest"  
  59.         fc=db.select(sql)  
  60.         for row in fc:  
  61.             print row["ptime"]  
  62.               
  63.     def ins():  
  64.         sql="insert into pythontest values(5,'数据结构','this is a big book',now())"  
  65.         count=db.update(sql)  
  66.         print count  
  67.     def insparam():  
  68.         sql="insert into pythontest values(%s,%s,%s,now())"  
  69.         params=(6,'C#','good book')  
  70.         count=db.updateByParam(sql,params)  
  71.         print count  
  72.     def delop():  
  73.         sql="delete from pythontest where pid=4"  
  74.         count=db.update(sql)  
  75.         print "the:"+str(count)  
  76.     def change():  
  77.         sql="update pythontest set pcontent='c# is a good book' where pid=6"  
  78.         count=db.update(sql)  
  79.         print count  
  80.           
  81.     #get()       
  82.     #ins()  
  83.     #insparam()  
  84.     #delop()  
  85.     #change()  
  86.       
  87.               
  88.               
  89.       
  90.       

附查询结果:

Python操作mysql数据库(封装基本的增删改查)