python的MySQL操作增删改查

来源:互联网 发布:价值观不同的体现知乎 编辑:程序博客网 时间:2024/05/20 09:21
#!/usr/bin/env python#coding:utf-8import MySQLdbconn=MySQLdb.connect(host='127.0.0.1',user='root',passwd='123')conn.select_db('08day5')#选择数据库cur=conn.cursor()#以元组的形式展示#cur=conn.cursor(cursorclass=MySQLdb.cursors.DictCursor)#以字典的形式展示cur.execute('DROP TABLE IF EXISTS admin')#如果数据表已经存在,则使用execute()方法删除#创建数据表sql='''CREATE TABLE admin(       id INT PRIMARY KEY AUTO_INCREMENT,       user VARCHAR(20) NOT NULL,       passwd VARCHAR(20) NOT NULL       )'''cur.execute(sql)#插入单条记录sql='insert into admin(user,passwd) values(%s,%s)'#使用sql语句,无论我们要插入的数据是什么类型,占位符都可以用%sparams=('alex','usa')#该参数用于取代占位符%scur.execute(sql,params)conn.commit()#请注意:用commit()提交事务之后,才能真正的插入数据。#插入多条记录(批量插入)sql='insert into admin(user,passwd) values(%s,%s)'l=[('song','222aaa'),('shi','333bbb'),('yuan','444ccc'),('xing','abcddd'),('cheng','kkjjhh')]cur.executemany(sql,l)#使用executemany()实现批量插入!conn.commit()#删除记录sql='delete from admin where id=%s'params=(3,)cur.execute(sql,params)conn.commit()#查询记录reCount=cur.execute('select * from admin')#返回本次操作影响的记录数print reCountdata=cur.fetchall()#获得  'select * from admin'语句 返回的结果集print datacur.scroll(0,mode='absolute')#光标回到初始位置0处(绝对定位)print cur.fetchone()#此时,光标位置为0;返回位置为0的记录print cur.fetchone()#返回位置为1的记录cur.scroll(1,mode='absolute')#光标回到1处(绝对定位)print cur.fetchone()#返回位置为1的记录cur.scroll(-2,mode='relative')#光标回退2步(相对定位)print cur.fetchmany(3)#从光标所在的位置(此时,光标位于0处),连续读取3条记录cur.scroll(1,mode='relative')#光标前进1步(相对定位)print cur.fetchone()#返回光标(位于4处)指向的那一条记录#修改sql='update admin set passwd=%s where user=%s'params=('123123','song')cur.execute(sql,params)conn.commit()cur.close()conn.close()
运行结果:
5
((1L, 'alex', 'usa'), (2L, 'song', '222aaa'), (4L, 'yuan', '444ccc'), (5L, 'xing', 'abcddd'), (6L, 'cheng', 'kkjjhh'))
(1L, 'alex', 'usa')
(2L, 'song', '222aaa')
(2L, 'song', '222aaa')
((1L, 'alex', 'usa'), (2L, 'song', '222aaa'), (4L, 'yuan', '444ccc'))
(6L, 'cheng', 'kkjjhh')


查询后中文会正确显示,但在数据库中却是乱码的。使用一个属性有可搞定:
将Python代码 
conn = MySQLdb.connect(host='localhost', user='root', passwd='root', db='python') 中增加一个参数:
改为:
conn = MySQLdb.Connect(host='localhost', user='root', passwd='root', db='python',charset='utf8') 

charset应该和我们数据库的编码一样,如果数据库是utf8 ,则上述语句中也应该写charset='utf8'。

下面贴一下常用的函数:


连接对象提供了对事务操作的支持;标准的方法有:
commit() 提交
rollback() 回滚


cursor用来执行命令的方法:
callproc(self, procname, args):用来执行存储过程,接收的参数为存储过程名和参数列表,返回值为受影响的行数。
execute(self, query, args):执行单条sql语句,接收的参数为sql语句本身和使用的参数列表,返回值为受影响的行数。
executemany(self, query, args):执行单条sql语句,但是会依次使用参数列表里的参数,返回值为受影响的行数。
nextset(self):移动到下一个结果集


cursor用来接收返回值的方法:
fetchall(self):接收全部的返回结果行。
fetchmany(self, size=None):接收size条返回结果行。如果size的值大于返回的结果行的数量,则会返回cursor.arraysize条数据。
fetchone(self):返回一条结果行。
scroll(self, value, mode='relative)移动指针到某一行

如果mode='relative',且value>0,则表示从当前所在行前进value行;
如果mode='relative',且value<0,则表示从当前所在行回退value行;
如果mode='absolute',则必须满足value>=0(此时的value可以视为结果集的索引,从0开始计数),表示将光标移动到value处。

原文点击打开链接

原创粉丝点击