数据库模块封装完毕

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

   昨天晚上加上今天白天完成了图书管理系统数据库操作模块的封装。准备明天开始做GUI前端,先学先做,估计要1周。再次感叹Python果然强大。
B5|q,iqqTcn0
!o'cTH%o3@0
`c xQ cE[0以下是我写的数据库模块天空博客k r u]6zP+EW W y
天空博客TzT(Y Lhl
天空博客$\\sD ^E
import MySQLdb天空博客$m s-qG)L*q |B
class db:
|(L5zSDIH+oZ0#构造函数,其中连接了数据库
w*H0QQ Vk9u9kA0def __init__(self , host , user , passwd):
/^RXI4fH+pLK0j0try:天空博客5J*~7GoU?,u;p7o ? P
print "Open the Database"天空博客 e$P;`)n1h(p
self.conn = MySQLdb.connect(host , user , passwd)
9b'N tOs&}0except MySQLdb.OperationalError ,error:
C;l;hm eL xi0print "Error %d: %s" % (error[0] , error[1])天空博客K#aKuC
#关闭数据库
*^ D f*Y6w_0def db_close(self):天空博客K#D0~at?+jG
self.conn.close()
eL'PbSB b0print "close the database"
j.y*aC9~bS0
V2@eS1W c0#使用数据库
A[ x.YO wb*\2N0def db_use(self , name):
d~0X w3xXl|!Zf0str = "use " + name天空博客QD}3? }8u4D
result = self.db_execute_SQL(str)天空博客vF'CJ(nN
return result
H m:dX B1wH7cHq0#查询数据库天空博客D7Fwp KDD*z
def db_select(self , name , *arg):
6hM;T8K:MM|!VCC0str = "SELECT * FROM " + name + self.__str_join__(" " , arg)
[Qva6E7C0result = self.db_execute_SQL(str)
"fRo[.Y?rB.]0return result
|Og.|A;w~r0天空博客;R/`t3noU.Z.qB4`I
#向数据库添加数据
$Bj;k8O8Z|%u)D c `0def db_insert(self , name , *value ):
}Boe7V~"}E\0X_0str = "INSERT INTO " + name + " VALUES (" + self.__str_join__("," , value) + ")"天空博客~4R#@z6F7}'x!T
result = self.db_execute_SQL(str)天空博客 f r#{U3I:kH3z
return result天空博客W:jk.C7} X!R:sUI+DyH

%n4J9T}5a` [6U0#删除数据库中的数据
2j(v;y7D'X2~;e0def db_delete(self , name , ID ):
a7oYd.Y#B fm0str = "DELETE FROM " + name + " WHERE id = " + ID天空博客:E1BYJ@l\'U WI
result = self.db_execute_SQL(str)天空博客O%P2IXl
return result
r6E d_3w{k*K0#修改数据库中的记录
2pb4^:I%s0def db_update(self , name , id , *arg):天空博客2c6{S9CA"P
str = "UPDATE " + name + " SET " + self.__str_join__("," , arg) + " WHERE id = " + id
t4aw,w!ko5T0result = self.db_execute_SQL(str)
[D|-e*u2x1A7?:u"|0return result
5|PVp7D1U%x`/q-v0#向数据库中添加表天空博客5Y6Zv;{5U$}veB
def db_create_table(self , name , *arg):
S`byXh5j~y0str = "CREATE TABLE " + name + "(" + self.__str_join__("," , arg) + ")"天空博客#l*`9\ ]c
result = self.db_execute_SQL(str)
n%_1u.{f R)U0return result
^lK8X]TD-T0
#} }s5jEv9r0#删除数据库中的表
?Ba@b@0?3b0def db_drop_table(self , name):
&| s!Q e:S8D;D]-m0str = "DROP TABLE " + name
4\j s*k)]0result = self.db_execute_SQL(str)天空博客/[j4S$~tA Y
return result天空博客2{5Q%X$ryj

B+N#U5R9K&C0#修改数据库中的表
ZQx^pt[G l0def db_alter_table(self , name , type , arg):
'wSgW\0TYPE = ("ADD" , "DROP" , "RENAME")
f!sj[~U0if type in TYPE:天空博客{7C:hd,X{Z8~I3y
str = "ALTER TABLE " + name + " " + type + " " + arg
(?+VAR%w }g0result = self.db_execute_SQL(str)
`&QK[GsD6^m#`0else:天空博客R;qQ0FYGB
print "You have an error in your SQL syntax;"
_%v5v/j/sr0return False
7H$}K-zD$nF~1G0Y0return result天空博客 EWk9| Z*f:R4a3~
#察看表的结构天空博客m;k cw,Rp-e
def db_describe(self , name):
VY[ o f0str = "DESCRIBE " + name天空博客y&c&s:ql|o
result = self.db_execute_SQL(str)
X5N_6q)e }/pX0return result
^w:bj2f7`]7bp w$A0天空博客ilhf$d~j
#执行SQL
i X1SHNU vxR0def db_execute_SQL(self , str):
$}0Z;l$F/q0cursor = self.conn.cursor()
UJ_?0Av J\0try:
Xe"u{f0print str
K4t,W:|9gQ.h0cursor.execute(str)天空博客 n:v]X4DL/KW)o
self.conn.commit()天空博客2Su c(S0i
allRecords = cursor.fetchall()
Zv:o;M+dE hcGB:i0except MySQLdb.ProgrammingError , error:天空博客e0MZ/\+}2X2AV0z } i1u
print "You have an error in your SQL syntax;"
4M}.b#~lT e|S0return False天空博客9a``$Iv]/O/z
except MySQLdb.OperationalError , error:天空博客6L&y/m ` w Vzdu-i
print "Error %d: %s" % (error[0] , error[1])天空博客$? m-}%k-gGR
return False
,`7X~Xf-@,C t \V~0if allRecords == ():天空博客R+]_0L{ o~{I)E
return True天空博客SN-EcL/g@|,h
else:天空博客(ISs(Ctk7j*i
return allRecords天空博客%p q'?8ws/po mcW
#用于连接SQL命令天空博客k A v:tSL5i9D'S
def __str_join__(self , symbol , arg):
A oK'L4Z!A.c0s = " "
9C$p\*q7QK0for i in arg:
[0S%nk$Ti0if s != " ":
T'I-iq*?I%El-V0s += symbol
%oH*z~+|kt@F0s += i天空博客 \m;`%b h'MX
return s
R.h%j}2}0
2I%[#j u/E n0#用于测试的模块
^*jMk%Jb+D5a0if __name__=='__main__':天空博客c3nvU"}!E
con = db("localhost" , "root" , "xxxxxxxxxxx")天空博客$A.dAz^;[
con.db_execute_SQL("CREATE DATABASE books")天空博客FR,U?YJ*C E:d0d
con.db_use("books")天空博客)G \/L4{8|,|
con.db_create_table("books" , "id int" , "Title CHAR(20)" , "Author CHAR(20)")
l`9^2{Y*qR0con.db_insert("books" , '3' , "'dd'" , '"LeYan"')
:V L{f6_0^0con.db_insert("books" , "4" , '"JanusLe"' , '"fff"')天空博客-Z R+p?G\!~
print con.db_select("books")
}'Qd#X:Y-Xf$A0con.db_delete("books" , "4")天空博客$a9nX2Q,Fj
print con.db_select("books")天空博客L|f;kX)X%|+Z
con.db_update("books" , "3" , 'Author = "NoName"')
X"F&a4P['}}-m(dL0print con.db_select("books")
sWu2^K.X+}0con.db_alter_table("books" , "ADD" , "tttt varchar(20)")天空博客4sLI.K(Yuo n O$b
print con.db_describe("books")天空博客|JHi*uQ)x
con.db_alter_table("books" , "DROP" , "tttt")天空博客*J*OG,Y2W\;[
print con.db_describe("books")天空博客UX1eg*w%z
con.db_close()
D(D5K7g,Up0天空博客h P"V"K Y8f!_!~

o[onS'J6I0天空博客I!I9IX7m/E

K7Z};xO9\ P0天空博客%g[0DR \O0N*K%Py

^$Rg*h1azkT0
[(i qAQ6Q4V0

TAG: 程序设计

 

评分:0

我来说两句

显示全部

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

日历

« 2009-07-05  
   1234
567891011
12131415161718
19202122232425
262728293031 

数据统计

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

RSS订阅

Open Toolbar