1介面
import mysqldb
2.鏈結資料庫
conn = mysqldb.connect()
3、獲取資料庫指標
因該模組底層其實是呼叫c api的,所以,需要先得到當前指向資料庫的指標:
cur = conn.cursor()
4、獲取資料庫資訊(select)
先使用指標物件執行sql語句:
cur.execute('select * from tables')
其返回值為sql語句得到的行數,如:2l,表示2行。
然後,可以從該物件的fetchone或fetchall方法得到行資訊。
5、獲取行資訊
指標物件的fetchone()方法,是每次得到一行的tuple返回值:
引用》 row=cur.fetchone()
>>> print row
('user1', '52c69e3a57331081823331c4e69d3f2e', 1000l, 1000l, '/home/ftp/user1', '')
指標物件的fetchall()方法,是得到一組tuple,其內容為由行資訊組成的tuple值:
引用》 cur.scroll(0,'absolute')
>>> row=cur.fetchall()
>>> print row
(('user1', '52c69e3a57331081823331c4e69d3f2e', 1000l, 1000l, '/home/ftp/user1', ''), ('user2', '7e58d63b60197ceb55a1c487989a3720', 1000l, 1000l, '/home/ftp/user2', none))
6、移動指標
當使用fetchone()方法是,指標是會發生移動的。所以,若不重置指標,那麼使用fetchall的資訊將只會包含指標後面的行內容。
手動移動指標使用:
cur.scroll(int,parm)
含義為:
引用int:移動的行數,整數;在相對模式下,正數向下移動,負值表示向上移動。
parm:移動的模式,預設是relative,相對模式;可接受absoulte,絕對模式。
※實際上,我覺得應該盡量避免移動指標;而應從select語句得到全部結果後,交給python處理tuple,比較方便。但我們應該明白該指標的含義。
7、修改資料
修改資料,包括插入、更新、刪除。它們都是使用指標物件的execute()方法執行:
cur.execute("insert into table (row1, row2) values ('111', '222')")
cur.execute("update table set row1 = 'test' where row2 = 'row2' ")
cur.execute("delete from table where row1 = 'row1' ")
因單引號「'」用於sql語句中的標識,所以,python中的字串需使用雙引號括住。
此外,也可以使用python的「格式化字串」寫法,簡化命令,例如:
cur.execute("update table set row1 = '%s' where row2 = '%s' " %('value1','value2'))
※請注意,'%s'的單引號是sql語句的間隔符,'value1'的單引號是python的字串間隔符,其含義是不同的。是否需要間隔符,以及使用雙引號還是單引號作為間隔,需根據其含義決定。例如,還有:
cur.execute("update ftpusers set passwd=%s where userid='%s' " %("md5('123')",'user2'))
這裡,paswd=%s是因sql的md5()函式是不需要單引號間隔的;"md5('123')"是python的字串中含有單引號,所以用雙引號括住。
8、提交修改
一般情況下,mysqldb模組會自動提交修改。但我們在更新資料後,手動執行一次:
conn.commit()
#coding=utf-8
import mysqldb
#!/usr/bin/env python
conn = mysqldb.connect(user = 'root', passwd='', host = '127.0.0.1') #連線資料庫
#conn = mysqldb.connect(user = 'root', passwd='', host = '127.0.0.1')
#conn = mysqldb.connect(user = 'root', passwd = '', host = '127,0,0,1')
cur = conn.cursor() #獲取資料庫指標
conn.select_db('aaa') #選擇資料庫
cur.execute("insert into test values(100, 'aaa','n')") #對資料庫表插入操作
cur.execute("update test set name = 'bbb' where id = 100") #對資料庫表更新操作
cur.execute("select * from test where id = 100") #對資料庫表查詢操作
#cur.execute("delete from test where id = 100") #對資料庫表刪除操作
cur.scroll(1,'absolute') #指標移動
g = cur.fetchall()
for x in g:
print x
conn.commit() #執行修改
cur.close()
conn.close()
Linux下MySQL預設對錶名區分大小寫
有個專案部署到伺服器上,日誌裡老是提示找不到表。原來linux下mysql預設對錶名區分大小寫。解決方法 一 規範 表名全部大寫 二 修改mysql配置,使表名全部自動轉為小寫。1.用root登入,修改 etc my.cnf 2.在 mysqld 下加入一行 lower case table nam...
Linux 下使用mysql 報錯!!
bash mysql command not found 原因 這是由於系統缺省會查詢 usr bin下的命令,如果這個命令不在這個目錄下,當然會找不到命令,我們需要做的就是對映乙個鏈結到 usr bin目錄下,相當於建立乙個鏈結檔案。首先得知道mysql命令或mysqladmin命令的完整路徑,比...
Linux下的MYSQL使用
首先,安裝mysql client和mysql server。1 以管理員身份進入mysql資料庫 mysql u root p 2 建立資料庫 create database 資料庫名 注意一定要寫上分號 3 顯示已有的資料庫 show datatbase 4 刪除資料庫 drop databas...