python MySQLdb學習筆記

2021-06-05 15:37:54 字數 2628 閱讀 1343

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...