PythonDB API:Python訪問數據庫的同一接口規範: python
PythonDB API包含的內容 ios
數據庫鏈接對象:connection sql
數據庫交互對象:cursor 數據庫
數據庫異常類:exceptions windows
使用Python DB API訪問數據庫流程 數組
開始 服務器
建立connection 網絡
獲取cursor 函數
增刪改查
關閉cursor
關閉connections
結束
MySQL-python
這裏注意:嘗試安裝屢次出錯
windows解決方案:easy_install MySQL-python 或者 pip install MySQL-python
Linux解決方案:apt-get install python-dev 或者 yum install python-develpython3 能夠安裝使用pymysql,此處留坑:
參考文獻:https://wiki.openstack.org/wiki/PyMySQL_evaluation
鏈接對象:創建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()關閉鏈接
遊標對象:用於執行查詢和獲取結果
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條.