Python操做MySQL數據庫

Python DB API

  • PythonDB API:Python訪問數據庫的同一接口規範: python

  • http://www.python.org/dev/peps/pep-0249 mysql

  • PythonDB API包含的內容 ios

    • 數據庫鏈接對象:connection sql

    • 數據庫交互對象:cursor 數據庫

    • 數據庫異常類:exceptions windows

  • 使用Python DB API訪問數據庫流程 數組

    1. 開始 服務器

    2. 建立connection 網絡

    3. 獲取cursor 函數

    4. 增刪改查

    5. 關閉cursor

    6. 關閉connections

    7. 結束


Python MySQl開發環境

MySQL-python

這裏注意:嘗試安裝屢次出錯

windows解決方案:easy_install MySQL-python    或者     pip install MySQL-python
Linux解決方案:apt-get install python-dev    或者     yum install python-devel

python3 能夠安裝使用pymysql,此處留坑:

參考文獻:https://wiki.openstack.org/wiki/PyMySQL_evaluation



DB API-數據庫鏈接對象-connectios

  • 鏈接對象:創建python客戶端與數據庫的網絡鏈接

  • 建立方法:MySQLdb.Connect(參數)

conn = MySQLdb.connect(host='localhost',user='root',passwd='xxxx',db='dbname')
    #    參數類型說明
    #    host:字符串,MySQL服務器地址
    #    port:數字,MySQL服務器端口號
    #    user:字符串,用戶名
    #    passwd:
    #    db:字符串,數據庫名稱
    #    chaset:鏈接編碼,中文用UTF-8

  • connections支持方法:

    • cursor()使用該鏈接建立並返回遊標

    • commit()提交當前事物

    • rollback()回滾當前事物

    • close()關閉鏈接



DB API-數據庫遊標對象 cursor

  • 遊標對象:用於執行查詢和獲取結果

  • cursor對象支持的方法:

    • execute(op[,args])    執行一個數據庫查詢和命令 ,將結果從數據庫獲取到客戶端   select,update,insert    

    • fetchone()    取得結果集的下一行    featch*方法:移動rownumber(相似於數組下標),返回數據

    • fetchmany(size)    獲取結果集的下幾行

    • fetchall()    獲取結果集的剩下的全部行

    • rowcount    最近一次execute返回去數據的行數或影響行數

    • close()    關閉遊標對象



示例代碼:

#-*- encoding: utf8-*-
import os, sys, string
import MySQLdb

# 鏈接數據庫 
try:
    conn = MySQLdb.connect(host='localhost',user='root',passwd='xxxx',db='test1')
except Exception, e:
    print e
    sys.exit()

# 獲取cursor對象來進行操做

cursor = conn.cursor()
# 建立表
sql = "create table if not exists test1(name varchar(128) primary key, age int(4))"
cursor.execute(sql)
# 插入數據
sql = "insert into test1(name, age) values ('%s', %d)" % ("zhaowei", 23)
try:
    cursor.execute(sql)
except Exception, e:
    print e

sql = "insert into test1(name, age) values ('%s', %d)" % ("張三", 21)
try:
    cursor.execute(sql)
except Exception, e:
    print e
# 插入多條

sql = "insert into test1(name, age) values (%s, %s)" 
val = (("李四", 24), ("王五", 25), ("洪六", 26))
try:
    cursor.executemany(sql, val)
except Exception, e:
    print e

#查詢出數據
sql = "select * from test1"
cursor.execute(sql)
alldata = cursor.fetchall()
# 若是有數據返回,就循環輸出, alldata是有個二維的列表
if alldata:
    for rec in alldata:
        print rec[0], rec[1]


cursor.close()

conn.close()


下面貼一下經常使用的函數:

而後,這個鏈接對象也提供了對事務操做的支持,標準的方法
commit() 提交
rollback() 回滾

cursor用來執行命令的方法:
callproc(self, procname, args):用來執行存儲過程,接收的參數爲存儲過程名和參數列表,返回值爲受影響的行數
execute(self, query, args):執行單條sql語句,接收的參數爲sql語句自己和使用的參數列表,返回值爲受影響的行數
executemany(self, query, args):執行單挑sql語句,可是重複執行參數列表裏的參數,返回值爲受影響的行數
nextset(self):移動到下一個結果集

cursor用來接收返回值的方法:
fetchall(self):接收所有的返回結果行.
fetchmany(self, size=None):接收size條返回結果行.若是size的值大於返回的結果行的數量,則會返回cursor.arraysize條數據.
fetchone(self):返回一條結果行.
scroll(self, value, mode='relative'):移動指針到某一行.若是mode='relative',則表示從當前所在行移動value條,若是 mode='absolute',則表示從結果集的第一行移動value條.

相關文章
相關標籤/搜索