码迷,mamicode.com
首页 > 数据库 > 详细

Python中的MySQLdb模块

时间:2015-02-02 22:49:07      阅读:239      评论:0      收藏:0      [点我收藏+]

标签:

前提已经安装了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‘))


 

Python中的MySQLdb模块

标签:

原文地址:http://www.cnblogs.com/gjwork/p/4268604.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!