Mysqldb連接數(shù)據(jù)庫
- conn = MySQLbd.connect #連接數(shù)據(jù)庫
- cur = conn.sursor() #返回當(dāng)前句柄
- commit() # 提交
- rollback() # 回滾
cursor執(zhí)行sql語句的方法:
- execute(self,query,args): 執(zhí)行單條sql語句本身和使用的參數(shù)列表财著,返回值為受影響的行數(shù)
- callproc(self,procname,args): 用來執(zhí)行存儲過程联四,接收的參數(shù)為存儲過程和參數(shù)列表,返回值為受影響的行數(shù)
- executemany(self,query,args): 執(zhí)行單條sql語句撑教,但是重復(fù)執(zhí)行參數(shù)列表里的參數(shù)朝墩,返回值為受影響的行數(shù)
- nextset(self) 移動到下一個結(jié)果集
cursor用來接收返回值的方法:
- fetchall(self): 接收全部的返回結(jié)果行。
- fetchmany(self,size=None): 接收size條返回結(jié)果行伟姐,如果size的值大于返回的結(jié)果行的數(shù)量收苏,則會返回cursor.arraysize條數(shù)據(jù)。
- fetchone(self): 返回一條結(jié)果行
- rowcount 這是一個只讀屬性愤兵,并返回執(zhí)行execute()方法后影響的行數(shù)鹿霸。
- scroll(self,value,mode='relative'): 移動指針到某一行;如果mode='relative',則表示從當(dāng)前所在行移動value條秆乳,如果mode='absolute'懦鼠,則表示從結(jié)果集的第一行移動value條
實(shí)例:
查詢EMPLOYEE表中salary(工資)字段大于1000的所有數(shù)據(jù):
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import MySQLdb
# 打開數(shù)據(jù)庫連接
db = MySQLdb.connect("localhost", "testuser", "test123", "TESTDB", charset='utf8' )
# 使用cursor()方法獲取操作游標(biāo)
cursor = db.cursor()
# SQL 查詢語句
sql = "SELECT * FROM EMPLOYEE \
WHERE INCOME > '%d'" % (1000)
try:
# 執(zhí)行SQL語句
cursor.execute(sql)
# 獲取所有記錄列表
results = cursor.fetchall()
for row in results:
fname = row[0]
lname = row[1]
age = row[2]
sex = row[3]
income = row[4]
# 打印結(jié)果
print "fname=%s,lname=%s,age=%d,sex=%s,income=%d" % \
(fname, lname, age, sex, income )
except:
print "Error: unable to fecth data"
# 關(guān)閉數(shù)據(jù)庫連接
db.close()
以上腳本執(zhí)行結(jié)果如下:
fname=Mac, lname=Mohan, age=20, sex=M, income=2000