Python中的MySQLdb模块

前提已经安装了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‘, ‘[email protected]‘)
>>> cur.fetchone() #每运行一次,游标下移一个索引。
(2L, ‘Beryl‘, ‘Li‘, ‘[email protected]‘)
>>> cur.fetchone() #每运行一次,游标下移一个索引。因为一共三条信息,这里是最后一条。
(3L, ‘Billly‘, ‘Xu‘, ‘[email protected]‘)
>>> 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‘, ‘[email protected]‘)

>>> a=cur.fetchall()
>>> a
#a是三行元组 #暂时这样理解,不确定对。
((1L, ‘Wendy‘, ‘Xu‘, ‘[email protected]‘), (2L, ‘Beryl‘, ‘Li‘, ‘[email protected]‘), (3L, ‘Billly‘, ‘Xu‘, ‘[email protected]‘))
>>> a[0]
#a[1]=(2L, ‘Beryl‘, ‘Li‘, ‘[email protected]‘)
(1L, ‘Wendy‘, ‘Xu‘, ‘[email protected]‘)
>>> 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‘, ‘[email protected]‘), (2L, ‘Beryl‘, ‘Li‘, ‘[email protected]‘))


 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。