昨天晚上加上今天白天完成了图书管理系统数据库操作模块的封装。准备明天开始做GUI前端,先学先做,估计要1周。再次感叹
Python果然强大。
x
S1J!?%GO6~B(g0 {K#F3l
PQ0天空博客3}YD"p R*I9B2m以下是我写的数据库模块
$^6@]OO(}0[HZ)cr7e1J&zs0%RD/G8?"N#faf0import MySQLdb
9@8}'Qa"E,NC/`)a%O0class db:
4Og4F"\+S7W
@0#构造函数,其中连接了数据库
天空博客lR;@9^ }Pbdef __init__(self , host , user , passwd):
天空博客,`#IF
\S6s}[Z@$U&htry:
'Q*tV-W8yH0print "Open the Database"
天空博客x;i W-Wx"c1tN6Gself.conn = MySQLdb.connect(host , user , passwd)
天空博客`'A{DSexcept MySQLdb.OperationalError ,error:
0s5W*is9y"Bv*k0p$@v*]0print "Error %d: %s" % (error[0] , error[1])
6Zg5T~F^0#关闭数据库
7b!`(m-T~}0def db_close(self):
天空博客!y1M4EAze3y$gself.conn.close()
hGc,u5PLX0print "close the database"
天空博客!y$}J+?;?天空博客_E#U3x-P9p,V#使用数据库
? ?.wa7Y3STJ0def db_use(self , name):
U!x*q8@$f:jKE0str = "use " + name
j#q \6C!Ad
@0result = self.db_execute_SQL(str)
G5Z~ y I{C A0return result
天空博客 R%F5pp-m1\l#查询数据库
-Za{o9V%|(r0def db_select(self , name , *arg):
天空博客8i3E"B)e$L~4\str = "SELECT * FROM " + name + self.__str_join__(" " , arg)
天空博客,Bky@6Rresult = self.db_execute_SQL(str)
天空博客Y;Id2T#Scbreturn result
&OH q&V6b3I}z0天空博客'y#g7B Tr'Fc]x#向数据库添加数据
天空博客;DX'\&q}7LNdef db_insert(self , name , *value ):
"L pT4L|/n%I)@4Bo
d9O0str = "INSERT INTO " + name + " VALUES (" + self.__str_join__("," , value) + ")"
:z2Ib r3RW#y
S0result = self.db_execute_SQL(str)
天空博客2vT?'A6I l#Lq%^return result
天空博客RqA/Cj%hZ~W E3w天空博客-T5I3\Z9k Wm)c*w x#删除数据库中的数据
U\4iN3N!}IN'naJ,l0def db_delete(self , name , ID ):
天空博客ma(aW
u)z`str = "DELETE FROM " + name + " WHERE id = " + ID
9j$]8z.s|0result = self.db_execute_SQL(str)
天空博客c!Bx0L+j7l"Preturn result
天空博客!M2`%c[%bf#修改数据库中的记录
AGs4U'V?:PJ0def db_update(self , name , id , *arg):
Uw
h#F a\P R m0str = "UPDATE " + name + " SET " + self.__str_join__("," , arg) + " WHERE id = " + id
h#Wv-J|z0MWy8dm\0result = self.db_execute_SQL(str)
天空博客(^ygNQ%M ^u#Ureturn result
1`JF-oR~0#向数据库中添加表
天空博客v/JY(_1oF(M~def db_create_table(self , name , *arg):
天空博客'O%y D.xR,kyN[str = "CREATE TABLE " + name + "(" + self.__str_join__("," , arg) + ")"
天空博客8y:c)j-Cr)e/]result = self.db_execute_SQL(str)
天空博客p:O h%G4Ureturn result
天空博客9|:[#Q(I!H
d天空博客+W"aCY]d$o#删除数据库中的表
X[M(xy1D6uS0def db_drop_table(self , name):
天空博客)f1TEQM?,ostr = "DROP TABLE " + name
天空博客'l sM d2\0N4aresult = self.db_execute_SQL(str)
天空博客z,V$_ w~Jg%}/HG@return result
"g3v(}3YZ%Tj B0天空博客*qcq0of^k6_#修改数据库中的表
天空博客M:{_5xM&U3`,_def db_alter_table(self , name , type , arg):
天空博客GHLDoWTYPE = ("ADD" , "DROP" , "RENAME")
p}] ql3@(kKSJ0if type in TYPE:
天空博客9g,d"j%\ R[d qe's7x%nstr = "ALTER TABLE " + name + " " + type + " " + arg
k%K5\FL U[;m0result = self.db_execute_SQL(str)
Zm8^&}ypr0else:
p.[oqh:T0print "You have an error in your SQL syntax;"
.{e#gs9D
AG0kH0return False
天空博客){s:Ks0X_return result
天空博客-[M
d!o:Na3]([Ua#察看表的结构
*nO$p%i'q-S3w5p|0def db_describe(self , name):
F'SrtizG0str = "DESCRIBE " + name
aS
[hQeP
jo0result = self.db_execute_SQL(str)
@(m?'^.wVGG?Q0return result
天空博客I&x!gcmGn5v2RBZ'?0#执行SQL
天空博客'_A)?Pg?Ebfdef db_execute_SQL(self , str):
天空博客8g5yML?,Tcursor = self.conn.cursor()
天空博客)LAH)fQS?!Ittry:
天空博客-l0W0[-GzPSR%cs2gprint str
天空博客{ZeB(}'YD9s0V%qcursor.execute(str)
5AZ"xQHdE,Kf
D0self.conn.commit()
天空博客o/K,Ht~?allRecords = cursor.fetchall()
`$g:T;L0~ ~_v0except MySQLdb.ProgrammingError , error:
m.A8Zo!ku^mQH,B0print "You have an error in your SQL syntax;"
~7wti*a[0return False
天空博客x~#x]VNE2f {except MySQLdb.OperationalError , error:
Yzi5KrB0print "Error %d: %s" % (error[0] , error[1])
#bs|{rQ0return False
C%h7m Ld/Tn j%P$i0if allRecords == ():
!_NB6U&T(aB;D/n0return True
*dFFc4_*N"]0else:
|e^d
[:t#Ax0return allRecords
D(B4wD Y+Km0#用于连接SQL命令
:XYS9b*OfT)W8h0def __str_join__(self , symbol , arg):
yqO\
v
k#jqN0s = " "
天空博客
b8Ld$N%jZfor i in arg:
m6rWPE+b;tV0if s != " ":
天空博客9`-q'B J~"b!h:Ps += symbol
MQz7U,H8i0s += i
天空博客N7U"pbjv+CX0W {{_l@return s
}|AnR-U(F5~0天空博客%M v$Y
k!]#s#用于测试的模块
天空博客B`*\!Q1i,H:L CG2l$`if __name__=='__main__':
5G
WhwHZ_"h0con = db("localhost" , "root" , "xxxxxxxxxxx")
!a4x#s5]L5rI
P0con.db_execute_SQL("CREATE DATABASE books")
3e S
rbbH7b g0con.db_use("books")
天空博客`-H)W?.|}w,fhLocon.db_create_table("books" , "id int" , "Title CHAR(20)" , "Author CHAR(20)")
1uzV_'_K0con.db_insert("books" , '3' , "'dd'" , '"LeYan"')
%W&q,i5L X#} WmU&Y1p'C0con.db_insert("books" , "4" , '"JanusLe"' , '"fff"')
8u8Tz
?
y
t8cl%[0print con.db_select("books")
6nF;e'bQrpfM0con.db_delete("books" , "4")
k8[,H*j x0print con.db_select("books")
天空博客t%A6\ M"]p]!G.fLcon.db_update("books" , "3" , 'Author = "NoName"')
天空博客(~C.]@v&r4M({1S Lq${print con.db_select("books")
1},?9Di}`yn0con.db_alter_table("books" , "ADD" , "tttt varchar(20)")
(lwufF0print con.db_describe("books")
天空博客y1cX;L2Pcon.db_alter_table("books" , "DROP" , "tttt")
天空博客7ZT9g$K/u#l`{-P)v
}print con.db_describe("books")
天空博客(jxS*r#w
acon.db_close()
天空博客]rq9{,f[ H]F
x天空博客)i[v V5?S_V8I)L Y6u^6_0天空博客
Qh6Oc3vG{+H4_sZ&z$Uc+Nq4kX0天空博客Yg0@1?
ks天空博客bYA-n)XjA天空博客v;zbn,s.b