数据库模块封装完毕

上一篇 / 下一篇  2006-08-03 17:00:18 / 天气: 晴朗 / 心情: 高兴 / 个人分类:程序设计

   昨天晚上加上今天白天完成了图书管理系统数据库操作模块的封装。准备明天开始做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^}Pb
def __init__(self , host , user , passwd):天空博客,`#IF \S6s}[ Z@$U&h
try:
'Q*tV-W8yH0print "Open the Database"天空博客 x;i W-Wx"c1tN6G
self.conn = MySQLdb.connect(host , user , passwd)天空博客 `'A{DS
except 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$g
self.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 @6R
result = self.db_execute_SQL(str)天空博客Y;Id2T#Scb
return result
&OH q&V6b3I}z0天空博客'y#g7B Tr'Fc]x
#向数据库添加数据天空博客;DX'\&q}7LN
def db_insert(self , name , *value ):
"LpT4L|/n%I)@4Bo d9O0str = "INSERT INTO " + name + " VALUES (" + self.__str_join__("," , value) + ")"
:z2Ibr3RW#y S0result = self.db_execute_SQL(str)天空博客2vT ?'A6Il#Lq%^
return result天空博客RqA/Cj%hZ~W E3w
天空博客-T5I3\Z9k Wm)c*wx
#删除数据库中的数据
U \4iN3N!}IN'n aJ,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"P
return 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)天空博客(^y gNQ%M ^u#U
return result
1`J F-oR~0#向数据库中添加表天空博客v/JY(_1oF(M ~
def db_create_table(self , name , *arg):天空博客'O%yD.xR,kyN [
str = "CREATE TABLE " + name + "(" + self.__str_join__("," , arg) + ")"天空博客8y:c)j-Cr)e/]
result = self.db_execute_SQL(str)天空博客p:O h%G4U
return result天空博客9|:[#Q(I!H d
天空博客+W"aCY]d$o
#删除数据库中的表
X[M(xy1D6uS0def db_drop_table(self , name):天空博客)f1TE QM?,o
str = "DROP TABLE " + name天空博客'l sM d2\0N4a
result = 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):天空博客GHLDoW
TYPE = ("ADD" , "DROP" , "RENAME")
p}]ql3@(kKSJ0if type in TYPE:天空博客9g,d"j%\ R[dqe's7x%n
str = "ALTER TABLE " + name + " " + type + " " + arg
k%K5\ FLU[;m0result = self.db_execute_SQL(str)
Zm8^&}ypr0else:
p.[oqh:T0print "You have an error in your SQL syntax;"
.{ e#gs9D A G0kH0return 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 [h QeP jo0result = self.db_execute_SQL(str)
@(m?'^.wVGG? Q0return result天空博客I&x!gcmG

n5v2R BZ'?0#执行SQL天空博客'_A)?Pg?Ebf
def db_execute_SQL(self , str):天空博客8g5yML?,T
cursor = self.conn.cursor()天空博客)LAH)fQS?!It
try:天空博客-l0W0[-GzPSR%cs2g
print str天空博客{ZeB(}'YD9s0V%q
cursor.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#A x0return allRecords
D(B4wDY+Km0#用于连接SQL命令
:XYS9b*OfT)W8h0def __str_join__(self , symbol , arg):
yqO\ v k#jqN0s = " "天空博客 b8Ld$N%jZ
for i in arg:
m6rWPE+b;tV0if s != " ":天空博客9`-q'B J~"b!h:P
s += symbol
MQz7U,H8i0s += i天空博客N7U"p b jv+CX0W {{_l@
return s
}|AnR-U(F5~0天空博客%M v$Y k!]#s
#用于测试的模块天空博客 B`*\!Q1i,H:LCG2l$`
if __name__=='__main__':
5G W hwHZ_"h0con = db("localhost" , "root" , "xxxxxxxxxxx")
!a4x#s5]L5rI P0con.db_execute_SQL("CREATE DATABASE books")
3e S r bbH7bg0con.db_use("books")天空博客`-H)W?.|}w,fhLo
con.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"')
8u8T z ? 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.fL
con.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;L2P
con.db_alter_table("books" , "DROP" , "tttt")天空博客7ZT9g$K/u#l`{-P)v }
print con.db_describe("books")天空博客(jxS*r#w a
con.db_close()天空博客]rq9{,f[H]F x
天空博客)i[vV5?S_V

8I)L Y6u^6_0天空博客 Qh6Oc3v G{+H4_

sZ&z$Uc+Nq4kX0天空博客Yg0@1? ks
天空博客bYA-n)XjA
天空博客 v;zbn,s.b

TAG: 程序设计

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

日历

« 2010-03-17  
 123456
78910111213
14151617181920
21222324252627
28293031   

数据统计

  • 访问量: 15790
  • 日志数: 134
  • 图片数: 1
  • 建立时间: 2006-05-27
  • 更新时间: 2007-05-19

RSS订阅

Open Toolbar