1.安裝mysql
sudo apt-get install mysql-server
Sudo apt-get install mysql-client
2.安裝MySQL-python驅動
sudo apt-get install mysql-python
3.測試是否安裝成功
python解釋器命令下運行 import MySQLdb
沒有報錯,說明安裝已成功。
4.python使用mysql數據庫常見操作
# -*- coding: utf-8 -*-
import MySQLdb
try:
#mysql連接
conn = MySQLdb.connect(host='localhost',user='root',passwd='password',port=3306,charset='utf8')
#創建游標
cur = conn.cursor()
#創建數據庫
cur.execute('create database if not exists pythondb')
#切換到數據庫
conn.select_db('pythondb')
#創建表
cur.execute("create table student(id int,name varchar(20),age int)")
#插入單條數據
cur.execute("insert into student values(9,'張三',28)")
#插入多條數據
cur.execute("insert into student values(2,'shijingjing08',21),(3,'shijingjing09',30),(4,'shijingjing10',12)")
#更新數據
cur.execute("update student set age=27 where name='shijingjing07' ")
#刪除數據
cur.execute("delete from student where name='shijingjing10' ")
#查找數據
count = cur.execute("select * from student ")
print "總條數"
print count
result = cur.fetchone()
print "查找一條"
print result
results = cur.fetchmany(5)
print "查找多條"
for r in results:
print r
cur.scroll(0,mode='absolute')
#游標定位到表中第一條數據
results = cur.fetchall()
print "查找所有數據,第二列的值"
for r in results:
print r[1]
#在再次執行select查詢返回結果集時,需要執行nextset()操作,移動到下一結果集,否則會報2014錯誤
cur.nextset()
#執行存儲過程的兩種方法
#cur.execute("call get_student('shijingjing',20)")
cur.callproc("get_student",('shijingjing',20))
print "執行存儲過程"
data=cur.fetchall()
for d in data:
print d
#關閉游標
cur.close()
#提交
conn.commit()
#關閉數據庫連接
conn.close()
except MySQLdb.Error,e:
print "Mysql Error %d:%s"%(e.args[0],e.args[1])
存儲過程get_student(in p_name varchar(20),in p_age int),輸入name,age參數,模糊查找name,以及age>p_age的學生。
delimiter $
create procedure get_student(in p_name varchar(20),in p_age int)
begin
select * from student where name like concat(p_name,'%') and age>p_age;
end;
$
5.運行結果:

6.常用的操作:
commit() 提交
rollback() 回滾
callproc(self, procname, args):用來執行存儲過程,接收的參數為存儲過程名和參數列表,返回值為受影響的行數
execute(self, query, args):執行單條sql語句,接收的參數為sql語句本身和使用的參數列表,返回值為受影響的行數
executemany(self, query, args):執行單挑sql語句,但是重復執行參數列表裡的參數,返回值為受影響的行數
nextset(self):移動到下一個結果集
fetchall(self):接收全部的返回結果行.
fetchmany(self, size=None):接收size條返回結果行.如果size的值大於返回的結果行的數量,則會返回cursor.arraysize條數據.
fetchone(self):返回一條結果行.
scroll(self, value, mode='relative'):移動指針到某一行.如果mode='relative',則表示從當前所在行移動value條,如果 mode='absolute',則表示從結果集的第一行移動value條.