数据库模块封装完毕
上一篇 / 下一篇 2006-08-03 17:00:18 / 天气: 晴朗 / 心情: 高兴 / 个人分类:程序设计
昨天晚上加上今天白天完成了图书管理系统数据库操作模块的封装。准备明天开始做GUI前端,先学先做,估计要1周。再次感叹Python果然强大。天空博客+A]\
n l M:x
天空博客6TW.a7b`l {O
天空博客vm#d3{?I
以下是我写的数据库模块天空博客#{%k'\k:~%kV"d"P\
'a;o/VZ1I'{0天空博客1UI:Sj;`
import MySQLdb天空博客p)G`/RAD
class db:天空博客*Aa ~@w\
#构造函数,其中连接了数据库天空博客.x4R9mf-o!h4pc
def __init__(self , host , user , passwd):天空博客y*||?0SiYP
try:
"_v3@5dG7c0print "Open the Database"天空博客0g \a pq(bo
self.conn = MySQLdb.connect(host , user , passwd)
5ZP-me,w-`p0except MySQLdb.OperationalError ,error:天空博客P$lM/I$E"V&`&Gne#c
print "Error %d: %s" % (error[0] , error[1])
+}*l9v KU0#关闭数据库天空博客N{@.K)sI#w jV#G
def db_close(self):
U[0|F!h{5BU0self.conn.close()
vG6a)r va0print "close the database"天空博客#C+s8ol(y
's5m&}$|,~V0#使用数据库天空博客OBF dj0W`*f
def db_use(self , name):天空博客!i1JV/Z:y0{.H
str = "use " + name
.w,\%KG,}n,h+| MJ0result = self.db_execute_SQL(str)天空博客XiCm4t'E
return result天空博客'`aG3n,h
#查询数据库
)arX7a:{6I0def db_select(self , name , *arg):
&F \6yH`p"Ik0G'Io0str = "SELECT * FROM " + name + self.__str_join__(" " , arg)
[slw bh'D3u0result = self.db_execute_SQL(str)天空博客X9UD-`9~0N(e$|/v[9P
return result
S D(O1n6O#T1V9l%ua0
tE$`RA p$?0#向数据库添加数据天空博客7O$s/p\-Rl
def db_insert(self , name , *value ):天空博客Gw:PA/~C0g
str = "INSERT INTO " + name + " VALUES (" + self.__str_join__("," , value) + ")"天空博客9XrU![ E-LA"F
result = self.db_execute_SQL(str)天空博客WU8j7f8^.{Nb}
return result
M8@HT}Ic"t0
%dag;XC-R7N0#删除数据库中的数据
:R iKn6S0def db_delete(self , name , ID ):天空博客4l0^Z0dY9d xltm
str = "DELETE FROM " + name + " WHERE id = " + ID天空博客:W D'Zd.T&no9t"[)L/q
result = self.db_execute_SQL(str)天空博客UokdB;e"zX iN
return result天空博客s{8N;`&K8? g
#修改数据库中的记录
&Le2G8S$et,Hc%D2s X+d0def db_update(self , name , id , *arg):
0s9Q yQ#SU5H/Nhp0str = "UPDATE " + name + " SET " + self.__str_join__("," , arg) + " WHERE id = " + id
Ki:O5Z AFY,s(d)C0result = self.db_execute_SQL(str)天空博客q5@0a} U"j
return result天空博客5T0Vf'b(e4C(?&MM
#向数据库中添加表
6\K+H+oIE3j8^["L!H0def db_create_table(self , name , *arg):
-q|-I DQ~0str = "CREATE TABLE " + name + "(" + self.__str_join__("," , arg) + ")"
/^ZXlx0result = self.db_execute_SQL(str)
_fZ|csXsyQ0return result
M*_O/r)u!bK_0
{1s!['C4p-V{x0#删除数据库中的表
0A(~J(tz*u7v Y0def db_drop_table(self , name):天空博客sSjRQ^M4rsS%@/I
str = "DROP TABLE " + name天空博客| F$c#Si
result = self.db_execute_SQL(str)天空博客 c)k!`#Wp
return result天空博客!X9bm;w9~
n"|4OyV7Kt|0#修改数据库中的表
"W2J"m$@H@G'_N0def db_alter_table(self , name , type , arg):
Lk2D~#Idh`&Z0TYPE = ("ADD" , "DROP" , "RENAME")
h,e0n$W4{.e-|y+[,J0if type in TYPE:
$P'BYd#A+~0str = "ALTER TABLE " + name + " " + type + " " + arg天空博客sLd1h!o
result = self.db_execute_SQL(str)
-k/R9`8_+[TM0else:天空博客R6Hr;jClc
print "You have an error in your SQL syntax;"
F6A]O0cu0return False天空博客 ql4wa7_
return result天空博客2@&nqbm
#察看表的结构天空博客]:z(d'j!Ya
def db_describe(self , name):天空博客 a+VN*J&`dGi
str = "DESCRIBE " + name
?0h"Ja?'?Q0result = self.db_execute_SQL(str)天空博客4qX~C2A-^ Y0h&u
return result天空博客qE$h qKs2W6h
天空博客H'iQ$lm*r|ys5@
#执行SQL天空博客QdQ0x"{
def db_execute_SQL(self , str):天空博客9xo$U8F(]t4{
cursor = self.conn.cursor()天空博客{a7N0CT%E8^
try:
:cX[*p9t+d1S0print str天空博客'^[v6p8bJWJ
cursor.execute(str)天空博客%Ux;P+Q}
self.conn.commit()天空博客C z6f)C?qk3`
allRecords = cursor.fetchall()
7VN2a`:w.fw_0except MySQLdb.ProgrammingError , error:
p#o#}i9R-[+k@0print "You have an error in your SQL syntax;"
7m0z[3O,F&s+s8uv0return False天空博客|X:M&wp`
except MySQLdb.OperationalError , error:
c6zML%~N&X
天空博客6TW.a7b`l {O
天空博客vm#d3{?I
以下是我写的数据库模块天空博客#{%k'\k:~%kV"d"P\
'a;o/VZ1I'{0天空博客1UI:Sj;`
import MySQLdb天空博客p)G`/RAD
class db:天空博客*Aa ~@w\
#构造函数,其中连接了数据库天空博客.x4R9mf-o!h4pc
def __init__(self , host , user , passwd):天空博客y*||?0SiYP
try:
"_v3@5dG7c0print "Open the Database"天空博客0g \a pq(bo
self.conn = MySQLdb.connect(host , user , passwd)
5ZP-me,w-`p0except MySQLdb.OperationalError ,error:天空博客P$lM/I$E"V&`&Gne#c
print "Error %d: %s" % (error[0] , error[1])
+}*l9v KU0#关闭数据库天空博客N{@.K)sI#w jV#G
def db_close(self):
U[0|F!h{5BU0self.conn.close()
vG6a)r va0print "close the database"天空博客#C+s8ol(y
's5m&}$|,~V0#使用数据库天空博客OBF dj0W`*f
def db_use(self , name):天空博客!i1JV/Z:y0{.H
str = "use " + name
.w,\%KG,}n,h+| MJ0result = self.db_execute_SQL(str)天空博客XiCm4t'E
return result天空博客'`aG3n,h
#查询数据库
)arX7a:{6I0def db_select(self , name , *arg):
&F \6yH`p"Ik0G'Io0str = "SELECT * FROM " + name + self.__str_join__(" " , arg)
[slw bh'D3u0result = self.db_execute_SQL(str)天空博客X9UD-`9~0N(e$|/v[9P
return result
S D(O1n6O#T1V9l%ua0
tE$`RA p$?0#向数据库添加数据天空博客7O$s/p\-Rl
def db_insert(self , name , *value ):天空博客Gw:PA/~C0g
str = "INSERT INTO " + name + " VALUES (" + self.__str_join__("," , value) + ")"天空博客9XrU![ E-LA"F
result = self.db_execute_SQL(str)天空博客WU8j7f8^.{Nb}
return result
M8@HT}Ic"t0
%dag;XC-R7N0#删除数据库中的数据
:R iKn6S0def db_delete(self , name , ID ):天空博客4l0^Z0dY9d xltm
str = "DELETE FROM " + name + " WHERE id = " + ID天空博客:W D'Zd.T&no9t"[)L/q
result = self.db_execute_SQL(str)天空博客UokdB;e"zX iN
return result天空博客s{8N;`&K8? g
#修改数据库中的记录
&Le2G8S$et,Hc%D2s X+d0def db_update(self , name , id , *arg):
0s9Q yQ#SU5H/Nhp0str = "UPDATE " + name + " SET " + self.__str_join__("," , arg) + " WHERE id = " + id
Ki:O5Z AFY,s(d)C0result = self.db_execute_SQL(str)天空博客q5@0a} U"j
return result天空博客5T0Vf'b(e4C(?&MM
#向数据库中添加表
6\K+H+oIE3j8^["L!H0def db_create_table(self , name , *arg):
-q|-I DQ~0str = "CREATE TABLE " + name + "(" + self.__str_join__("," , arg) + ")"
/^ZXlx0result = self.db_execute_SQL(str)
_fZ|csXsyQ0return result
M*_O/r)u!bK_0
{1s!['C4p-V{x0#删除数据库中的表
0A(~J(tz*u7v Y0def db_drop_table(self , name):天空博客sSjRQ^M4rsS%@/I
str = "DROP TABLE " + name天空博客| F$c#Si
result = self.db_execute_SQL(str)天空博客 c)k!`#Wp
return result天空博客!X9bm;w9~
n"|4OyV7Kt|0#修改数据库中的表
"W2J"m$@H@G'_N0def db_alter_table(self , name , type , arg):
Lk2D~#Idh`&Z0TYPE = ("ADD" , "DROP" , "RENAME")
h,e0n$W4{.e-|y+[,J0if type in TYPE:
$P'BYd#A+~0str = "ALTER TABLE " + name + " " + type + " " + arg天空博客sLd1h!o
result = self.db_execute_SQL(str)
-k/R9`8_+[TM0else:天空博客R6Hr;jClc
print "You have an error in your SQL syntax;"
F6A]O0cu0return False天空博客 ql4wa7_
return result天空博客2@&nqbm
#察看表的结构天空博客]:z(d'j!Ya
def db_describe(self , name):天空博客 a+VN*J&`dGi
str = "DESCRIBE " + name
?0h"Ja?'?Q0result = self.db_execute_SQL(str)天空博客4qX~C2A-^ Y0h&u
return result天空博客qE$h qKs2W6h
天空博客H'iQ$lm*r|ys5@
#执行SQL天空博客QdQ0x"{
def db_execute_SQL(self , str):天空博客9xo$U8F(]t4{
cursor = self.conn.cursor()天空博客{a7N0CT%E8^
try:
:cX[*p9t+d1S0print str天空博客'^[v6p8bJWJ
cursor.execute(str)天空博客%Ux;P+Q}
self.conn.commit()天空博客C z6f)C?qk3`
allRecords = cursor.fetchall()
7VN2a`:w.fw_0except MySQLdb.ProgrammingError , error:
p#o#}i9R-[+k@0print "You have an error in your SQL syntax;"
7m0z[3O,F&s+s8uv0return False天空博客|X:M&wp`
except MySQLdb.OperationalError , error:
c6zML%~N&X