前提已经安装了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) #连接数据库books0L>>> 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]‘))
时间: 2024-10-06 09:34:30