python的mysql模块_MySQL-python模块

1. Python 操作 Mysql 模块的安装

linux:

pip install MySQL-python 或 yum -y install MySQL-python

windows: exe安装包

http://pan.baidu.com/s/1c2ugfvE

2. SQL基本使用

2.1 数据库操作

show databases;

use [databasename];

create database [databasename] charset utf8;

2.2 数据表操作

create database py CHARSET('utf8')usepycreate tablestudents (

idint not null auto_increment primary key,

namechar(32) not null,

sexchar(12) not null,

agetinyint unsigned not null,

telchar(13) null default "-",

nalchar(64)

);

2.3 数据操作

insert into students(name,sex,age,tel,nal) values('alex','man',18,'151515151','CN')delete from students where id =2;update students set name = 'sb' where id =1;select * from students

2.4 其他

主键

外键

左右连接

3. Python MySQL API

3.1 插入数据

#!/use/bin/env python#-*- coding:utf-8 -*-

importMySQLdb

conn= MySQLdb.connect('py', user='root', passwd='py123', db='py')

cur=conn.cursor()info = [('go1','man',30,'13900000000', 'US'),('go2','man',28,'13900000001', 'HK'),]

info1= ('mihui','man',30,'13900000000', 'US')

info2= ['YeGangchan','man',28,'13900000001', 'HK']#reCount = cur.execute('insert into students(name,sex,age,tel,nal) values(%s,%s,%s,%s,%s)', info1)

reCount = cur.execute('insert into students(name,sex,age,tel,nal) values(%s,%s,%s,%s,%s)', info2)

reCount2= cur.execute('insert into students(name,sex,age,tel,nal) values(%s,%s,%s,%s,%s)', ('rain','female',18,'123000000000','NK'))

# 插入多条

reCount3 = cur.executemany('insert into students(name,sex,age,tel,nal) values(%s,%s,%s,%s,%s)', info)

conn.commit()

cur.close()

conn.close()print(reCount)

注意:cur.lastrowid

3.2 删除数据

#!/use/bin/env python#-*- coding:utf-8 -*-

importMySQLdb

conn= MySQLdb.connect(host='py', user='root', passwd='py123', db='py')

cur=conn.cursor()

reCount= cur.execute('delete from students where name=%s',('syl'))

conn.commit()

cur.close()

conn.close()print(reCount)

3.3 修改数据

#!/use/bin/env python#-*- coding:utf-8 -*-

importMySQLdb

conn= MySQLdb.connect(host='py', user='root', passwd='py123', db='py')

cur=conn.cursor()

reCount= cur.execute('update students set name=%s where name=%s',('Laonanhai', 'Oldboy'))

conn.commit()

cur.close()

conn.close()print(reCount)

3.4 查询数据

#!/use/bin/env python#-*- coding:utf-8 -*-

importMySQLdb

conn= MySQLdb.connect('py', user='root', passwd='py123', db='py')

cur=conn.cursor()

reCount= cur.execute('select * from students')## fetchone()

print(cur.fetchone())print(cur.fetchone())print(cur.fetchone())

cur.scroll(-1, mode='relative') #游标相对上移一个

print(cur.fetchone())print(cur.fetchone())print('##------')

cur.scroll(0, mode='absolute') #游标移动到绝对位置0#print(cur.fetchone())#print(cur.fetchone())

print('##------ fetchmany()')#print(cur.fetchmany())

print(cur.fetchmany(4))

cur.close()

conn.close()print(reCount)

#!/use/bin/env python#-*- coding:utf-8 -*-

importMySQLdb

conn= MySQLdb.connect(host='py', user='root', passwd='py123', db='py')

cur=conn.cursor()#cur = conn.cursor(cursorclass=MySQLdb.cursors.DictCursor)

reCount= cur.execute('select * from students')

nRes=cur.fetchall()

cur.close()

conn.close()print(reCount)print(nRes)for i innRes:print(i[0],i[1])

3.5 事务回滚

students表创建语句:

CREATE TABLE `students` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`name` char(32) NOT NULL,

`sex` char(12) DEFAULT NULL,

`age` tinyint(3) unsigned NOT NULL,

`tel` char(13) DEFAULT '_',

`nal` char(64) DEFAULT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8

如:select * from students现在的结果如下(id自增)

885885-20160401212114394-1036441568.png

现在的最后一条数据的id为6

插入两条数据在commit()前行rollback()

#!/use/bin/env python#-*- coding:utf-8 -*-

importMySQLdb

conn= MySQLdb.connect(host='py', user='root', passwd='py123', db='py')

cur=conn.cursor()

reCount= cur.execute('insert into students(name,sex,age,tel,nal) values(%s,%s,%s,%s,%s)', ('rain2','man',26,'123000000002','NK'))

reCount2= cur.execute('insert into students(name,sex,age,tel,nal) values(%s,%s,%s,%s,%s)', ('rain3','female',22,'123000000003','NK'))

conn.rollback()

conn.commit()

cur.close()

conn.close()print(reCount)print(reCount2)

现在再来

select * from students现在的结果如下

885885-20160401212114394-1036441568.png

最后一条数据的仍id为6

做一次真正数据插入:

#!/use/bin/env python#-*- coding:utf-8 -*-

importMySQLdb

conn= MySQLdb.connect(host='py', user='root', passwd='py123', db='py')

cur=conn.cursor()

reCount= cur.execute('insert into students(name,sex,age,tel,nal) values(%s,%s,%s,%s,%s)', ('rain2','man',26,'123000000002','NK'))

reCount2= cur.execute('insert into students(name,sex,age,tel,nal) values(%s,%s,%s,%s,%s)', ('rain3','female',22,'123000000003','NK'))#conn.rollback()

conn.commit()

cur.close()

conn.close()print(reCount)print(reCount2)

select * from students现在的结果如下

885885-20160401212542129-835545415.png

结果id跳过了7,8

id AUTO_INCREMENT信息保存在内存中,rollback时不回滚AUTO_INCREMENT信息

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值