標籤:
前提已經安裝了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 MySQLdbtry: 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]na.com‘)
>>> 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]‘))
Python中的MySQLdb模組