Python中的MySQLdb模块

本文介绍了如何使用Python中的MySQLdb模块连接MySQL数据库,并演示了基本的操作流程,包括连接数据库、执行SQL语句、获取数据及游标操作等。

前提已经安装了mysql,安装了setuptools,然后参考网页 http://jingyan.baidu.com/article/fedf07377ded3e35ad897750.html 将mysql和django关联。这样就可以将django里面的模型和数据库进行关联了。

如果不用django的模块,这里只是单纯的介绍Python里面的Mysqldb模块。参考 http://www.cnblogs.com/rollenholt/archive/2012/05/29/2524327.html  在其基础上,进行小部分删减和扩充。代码部分未完待续。以后用到新的需要再添加。

 

import MySQLdb
try:
    conn=MySQLdb.connect(host='127.0.0.1',user='root',passwd='123456',db='books',port=3306)   #连接数据库 
    cur=conn.cursor()                  #取得数据库游标
cur.execute('select * from books_book') #执行数据库语句 cur.close() #关闭游标 conn.close() #关闭数据库
except MySQLdb.Error, e: print "MySQL Error %d: %s" % (e.args[0], e.args[1])

 
 import MySQLdb
>>> conn=MySQLdb.connect(host='127.0.0.1',user='root',passwd='123456',port=3306)
>>> cur=conn.cursor() #在进入数据库就取得游标。类似于光标。一个激动可能会说成光标。通过执行数据库语句把游标移动到不同的位置,比如移动到某个库里,移动到某个库的某个表里。
>>> cur.execute("use books")   ###这个也可以用  conn.select_db('books') #等同于数据库端的use database   然后是 cur=conn.cursor()  ###或者 conn=MySQLdb.connect(host='127.0.0.1',user='root',passwd='123456',db='books',port=3306) #连接数据库books
0L
>>> cur.execute("SELECT * FROM books_author") #这样就把游标cur调到表books_author 中了。执行数据库语句,不用分号,大小写无妨 #输出显示一共有三条信息
3L
>>> cur.fetchone() #每运行一次完毕,输出当前游标信息,同时,游标下移到下一个索引。要想看具体的信息结果,就用fetchone()和fetchall()属性。
(1L, 'Wendy', 'Xu', 'wendy.xu@sina.com')
>>> cur.fetchone() #每运行一次,游标下移一个索引。
(2L, 'Beryl', 'Li', 'beryl.li@sina.com')
>>> cur.fetchone() #每运行一次,游标下移一个索引。因为一共三条信息,这里是最后一条。
(3L, 'Billly', 'Xu', 'billy.xu@sina.com')
>>> cur.fetchone() #因为已经没有后续记录了,所以这里运行fetchone返回为空。
>>> cur.fetchone()
>>> cur.scroll(0,'absolute') #重新确认游标位置。数据库里面的第一条记录索引为0. 这里默认是relative,cur.scroll(2,'relative') 在当前游标位置,往后挪2位。现在索引是第一个,那么relative这条语句执行后游标停在第三条上。absolute是绝对索引。指定游标停的绝对位置。
>>> a=cur.fetchone()
>>> a                            #a是一元元组,使用元组需要序列号索引。#a[0]='1L', a[1]='Wendy'
(1L, 'Wendy', 'Xu', 'wendy.xu@sina.com')

>>> a=cur.fetchall()
>>> a
#a是三行元组 #暂时这样理解,不确定对。
((1L, 'Wendy', 'Xu', 'wendy.xu@sina.com'), (2L, 'Beryl', 'Li', 'beryl.li@sina.com'), (3L, 'Billly', 'Xu', 'billy.xu@sina.com'))
>>> a[0]
#a[1]=(2L, 'Beryl', 'Li', 'beryl.li@sina.com')
(1L, 'Wendy', 'Xu', 'wendy.xu@sina.com')
>>> a[0][1] #a[0][0]='1L'
'Wendy'
>>>

通过这样的方式获取数据库已知信息。取出来都是元组。想取出某列可以如下
>>> cur.execute("SELECT * from books_author")
3L
>>> v=[i[1] for i in cur.fetchall()] #注意是中括号
>>> v
['Wendy', 'Beryl', 'Billly']
>>> cur.description
(('id', 3, 1, 11, 11, 0, 0), ('first_name', 253, 6, 30, 30, 0, 0), ('last_name', 253, 2, 40, 40, 0, 0), ('email', 253, 17, 75, 75, 0, 0))
>>> cur.execute("DESCRIBE books_author;")  #这个蓝色的部分是值,cur.execute到哪里,就执行什么。所以使用前都需要调取游标位置。cur.execute  知道点数据库语言有好处。
>>> cur.description
(('Field', 253, 10, 64, 64, 0, 0), ('Type', 252, 11, 196605, 196605, 0, 0), ('Null', 253, 2, 3, 3, 0, 0), ('Key', 253, 3, 3, 3, 0, 0), ('Default', 252, 0, 196605, 196605, 0, 1), ('Extra', 253, 14, 30, 30, 0, 0)
>>> cur.scroll(0,'absolute')
>>> cur.fetchmany(2)
((1L, 'Wendy', 'Xu', 'wendy.xu@sina.com'), (2L, 'Beryl', 'Li', 'beryl.li@sina.com'))


 

转载于:https://www.cnblogs.com/gjwork/p/4268604.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值