感觉学过的东西,总结一下比较好,不然随着时间的流逝又都忘却了。当以后的时间里突然用到了,想起来这个东西曾经学过,然后还有总结可以看,这确实是有效率又令人舒服的事情。
最近学了一下python脚本对数据库的操作,记录的同时,也分享出来。
# -*-encoding: utf-8 -*-
import MySQLdb #首先是导入数据库的包
try:
#连接到数据库,获得连接数据库对象conn
conn = MySQLdb.connect(host="localhost",user="root",passwd="911223",port=3306)
#获取当前连接的游标对象,以后基本用游标对象cur来操作数据库
cur = conn.cursor()
#创建数据库python
cur.execute('create database if not exists python')
#选择刚刚创建的数据库python,如果本来就有的数据库,可以在第一行创建conn对象时就选择;由于新创建的,所以用conn对象再选择一次。
conn.select_db('python')
#创建数据表test
cur.execute('create table test(id int,info varchar(20))')
#定义个键值对value
value=[1,'hi rollen']
#插入到数据表test,注意一下语法,values(%s,%s)',value
cur.execute('insert into test values(%s,%s)',value)
values=[]
for i in range(20):
values.append((i,'hi rollen'+str(i)))
#一次执行多条语句用executemany
cur.executemany('insert into test values(%s,%s)',values)
cur.execute('update test set info="I am rollen" where id=3')
#提交当前事务:必须sql写完后要提交commit(),尤其是insert, update, delete时,否则数据库没有变化!!! 而像select这种普通的查询,不涉及修改数据库的,是否commit()没有关系
conn.commit()
#关闭游标
cur.close()
#关闭数据库
conn.close()
except MySQLdb.Error,e:#捕获异常
print "Mysql Error %d: %s" % (e.args[0], e.args[1])
----------
## 下边代码为验证一下数据库操作的结果 ##
try:
conn=MySQLdb.connect(host='localhost',user='root',passwd='911223',port=3306)
cur=conn.cursor()
conn.select_db('python')
#查看共有多少条记录
count=cur.execute('select * from test')
print 'there has %s rows record' % count
result=cur.fetchone()#获取一条记录,以一个元组返回
print result
print 'ID: %s info %s' % result
results=cur.fetchmany(5)#获取后5条记录,由于之前执行了getchone(),所以游标已经指到第二条记录,下面也就从第二条记录开始返回
for r in results:
print r
print '=='*10
#重置游标位置,0,为偏移量,mode = relative(默认)
cur.scroll(0,mode='absolute')
#将所有(剩余)的行作为序列的序列
results=cur.fetchall()
for r in results:
print r[1]
conn.commit()
cur.close()
conn.close()
except MySQLdb.Error,e:
print "Mysql Error %d: %s" % (e.args[0], e.args[1])
运行结果:
PS D:\python\WorkSpace> python mysql.py
mysql.py:9: Warning: Can’t create database ‘python’; database exists
cur.execute(‘create database if not exists python’)
Mysql Error 1050: Table ‘test’ already exists
there has 21 rows record
(1L, ‘hi rollen’)
ID: 1 info hi rollen
(0L, ‘hi rollen0’)
(1L, ‘hi rollen1’)
(2L, ‘hi rollen2’)
(3L, ‘I am rollen’)
(4L, ‘hi rollen4’)
================
hi rollen
hi rollen0
hi rollen1
hi rollen2
I am rollen
hi rollen4
hi rollen5
hi rollen6
hi rollen7
hi rollen8
hi rollen9
hi rollen10
hi rollen11
hi rollen12
hi rollen13
hi rollen14
hi rollen15
hi rollen16
hi rollen17
hi rollen18
hi rollen19