mysqldb庫是python訪問mysql的連線庫,最近專案中需要使用,將學習使用所得整理如下。
mysqldb windows下執行需要 libmysql.dll、libmmd.dll 和 libguide40.dll ,可以放在sitepackage下也可以在windows\system32\
學習mysqldb的使用,下面的文件必不可少:
mysqldb使用者指南
mysqldb文件
言歸正傳,如何使用mysqldb呢,其實和python內建的sqlite3的使用方法基本相同,簡單說就是以下四個步驟:
建立資料庫連線,取得cursor物件
執行sql語句,接收返回值
根據執**況,提交或者回滾資料庫。
關閉cursor,關閉資料庫連線
1,引入mysqldb庫建立和資料庫的連線
import mysqldb
引數定義:
host:資料庫主機名.預設是用本地主機.
user:資料庫登陸名.預設是當前使用者.
passwd:資料庫登陸的秘密.預設為空.
db:要使用的資料庫名.沒有預設值.
port:mysql服務使用的tcp埠.預設是3306.
連線物件提供了對事務操作的支援:
commit()和
rollback()
2,執行sql語句和接收返回值
cursor=conn.cursor()
n=cursor.execute(sql,param)
建立建立連線後,首先就要獲取乙個cursor物件,因為以後的資料庫操作都要通過它來進行。那麼cursor物件都有哪些方法呢?cursor物件的主要有以下方法:
下面是具體進行資料庫操作的示意**:
插入資料:
#使用sql語句,這裡要接收的引數用%s表示,它就是乙個佔位符,無論代表的資料是什麼型別,都用%s來表示
sql="insert into operator values(%s,%s,%s,%s,%s)"
#引數應該為tuple或者list
ps=(id,name,age,***,password)
#執行,如果成功,n的值為1
n=cursor.execute(sql,ps)
查詢資料:
cursor.execute("select * from operator")
#fetchall方法返回的全部結果.每條結果都是乙個tuple型別的資料,rs就是tuple組成的tuple
rs=cursor.fetchall()
#可以這樣使用結果集
print rs[0][3]
#或者直接顯示出來,看看結果集的真實樣子
print rs
#實際資料形式應該是這樣的:((1,'zhang',25,'male','123'),(2,'wang',28,'male','1123'))
批量插入資料:
sql="insert into operator values(%s,%s,%s,%s,%s)"
#引數同樣需要乙個tuple組成的tuple,當然tuple組成的list也是可以的
ps=((1,'zhang',25,'male','123'),(2,'wangxia',28,'female','1123'))
#使用executemany方法來批量的插入資料。
n=cursor.executemany(sql,ps)
3,根據執**況,提交或者回滾資料庫:
conn.commit()
4,關閉資料庫連線
首先關閉cursor物件,然後是連線物件:
cursor.close()
conn.close()
另,mysqldb預設情況下,查詢結果行都是返回tuple,訪問的時候不是很方便,必須按照0,1這樣讀取。以前使用sqllite3的時候,可以修改過connection物件的row_factory屬性,以便使用sqlite3.row,這樣結果集中的資料行就是字典形式的,可以用欄位名訪問,那麼mysqldb中是不是也有這樣的方法呢,經過在網上搜尋發現,mysqldb中有dictcursor,要做到這點也很簡單,那就是建立資料庫連線是傳遞cusorclass引數,或者在獲取cursor物件時傳遞cusorclass引數即可:
import mysqldb
import mysqldb.cursors
cursor=conn.cursor();
或者
import mysqldb
import mysqldb.cursors
cursor=conn.cursor(cursorclass=mysqldb.cursors.dictcursor);
然後我們上面例子中的查詢結果就會變成下面這個樣子的:
(.....)
python MySQLdb學習筆記
mysqldb庫是python訪問mysql的連線庫,最近專案中需要使用,將學習使用所得整理如下。mysqldb windows下執行需要 libmysql.dll libmmd.dll 和 libguide40.dll 可以放在sitepackage下也可以在windows system32 學習...
python MySQLdb連線mysql失敗問題
mysql exceptions.operationalerror 2002,can t connect to local mysql 在很多種情況下,如果配置檔案沒有出錯的話,將機器重啟,確認關閉防火牆,確定啟動了mysql即可。網上很不錯講解 最近了解了一下django,資料庫選用了mysql,...
Python Mysqldb使用簡介
python db api使用流程 一 python查詢mysql使用 fetchone 方法獲取單條資料,使用fetchall 方法獲取多條資料。fetchone 該方法獲取下乙個查詢結果集。結果集是乙個物件 fetchall 接收全部的返回結果行.rowcount 這是乙個唯讀屬性,並返回執行e...