#!/usr/bin/env python
#-*-encoding:UTF-8-*-
"""
測試MySQL的連接及操作
"""
import MySQLdb
import sys
#連接測試
try:
conn=MySQLdb.connect(
host='localhost'
port=3306
user='username'
passwd='password'
db='database'
)
except Exception,e:
print e
sys.exit()
mycursor=conn.cursor()
#獲取遊標,用遊標操作數據庫
#創建表
ctable="""CREATE TABLE test if not exists(name VARCHAR(30),uid INT(10) primary key)"""
mycursor.execute(ctable)
#插入數據
insert1="""INSERT INTO test(name='aaa',uid=111)"""
insert2="""INSERT INTO test(name='bbb',uid=222)"""
insert3="""INSERT INTO test(name='ccc',uid=333)"""
inserts=[]
inserts[0].append(insert1)
inserts[1].append(insert2)
inserts[2].append(insert3)
for insert in inserts:
try:
mycursor.execute(insert)
except Exception,e:
print e
#刪除數據
#註釋掉,下邊查詢要用到數據,只記錄操作
#mycursor.execute("""DELETE FROM test WHERE name='aaa'""")
#多表刪除
#delmany=""""DELETE FROM table1,table2,table3 WHERE table1.uid=XXX AND table2.uid=table3.uid"""
#mycursor.execute(delmany)
#查詢表
slct="""SELECT * FROM test"""
mycursor.execute(slct)
#查詢緩衝池中匹配記錄
records=mycursor.fetchall()
for record in records:
print record
#結束數據庫操作,釋放遊標
mycursor.close()
#提交操作
conn.commit()
#關閉連接
conn.close()
以上是基本操作,補充幾個對象的方法和屬性:
1.connection(連接)對象:
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
方法名 作用
close() 關閉數據庫
commit() 提交當前事務
rollback() 取消當前事務
cursor() 獲取當前連接的遊標對象
errorhandler(cxn,cur,errcls,errval) 作爲已給遊標的句柄
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2.cursor遊標對象屬性及方法:
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
屬性方法 描述
arraysize 使用fetchmany()方法時一次取出的記錄數,默認爲1
connection 創建此遊標的連接(可選)
discription 返回遊標的活動狀態,包括(7元素):(name,type_code,
display_size,internal_size,precision,scale,null_ok)
其中name,type_code是必須的。
lastrowid 返回最後更新行的ID(可選),如果數據庫不支持,返回None
rowcount 最後一次execute()返回或影響的行數
callproc(func[,args]) 調用一個存儲過程
close() 關閉遊標
execute(op[,args]) 執行sql語句或數據庫命令
executemany(op,args) 一次執行多條sql語句,執行的條數由arraysize給出
fetchone() 匹配結果的下一行
fetchall() 匹配所有剩餘結果
fetchmany(size-cursor,arraysize) 匹配結果的下幾行
__iter__() 創建迭代對象(可選,參考next())
messages 遊標執行好數據庫返回的信息列表(元組集合)
next() 使用迭代對象得到結果的下一行
nextset() 移動到下一個結果集(如果支持的話)
rownumber 當前結果集中游標的索引(從0行開始)
setinput-size(sizes) 設置輸入最大值
setoutput-size(sizes[,col]) 設置列輸出的緩衝值