Python 操作MySQL數據庫範例

#!/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])  設置列輸出的緩衝值


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章