Python使用MySQL資料庫

來源:互聯網
上載者:User

Python使用MySQL資料庫

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資料庫常見操作 exmysql.py

# -*- 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條.

 

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.