数据库模块封装完毕

上一篇 / 下一篇  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 K U0#关闭数据库天空博客N{@.K)sI#wjV#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'I o0str = "SELECT * FROM " + name + self.__str_join__(" " , arg)
[slw bh'D3u0result = self.db_execute_SQL(str)天空博客X9U D-`9~0N(e$|/v[9P
return result
S D(O1n6O#T1V9l%ua0
tE$`R A 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天空博客:WD'Zd.T&no9t"[)L/q
result = self.db_execute_SQL(str)天空博客UokdB;e"z X 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(?&M M
#向数据库中添加表
6\K+H+oIE3j8^["L!H0def db_create_table(self , name , *arg):
-q|-IDQ~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):天空博客sSj RQ^M4rs S%@/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天空博客s Ld1h!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天空博客 q l4wa7_
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$l m*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()天空博客Cz6f)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&XD\K8X0print "Error %d: %s" % (error[0] , error[1])
Rx'[3M&J6Z8m0return False
Vu-ef3I9Qq!J7^0if allRecords == ():
;S Eo.[^:l:Y0return True天空博客:lVjr(l2IKT,n @*\
else:天空博客A/adzo"r9gm
return allRecords天空博客1Y7G)K5lG']s
#用于连接SQL命令天空博客.pU)KBw4L2mZ|
def __str_join__(self , symbol , arg):天空博客5l:~+y3P"`|
s = " "
(S.L3Kl+F0for i in arg:
FpF bKD#f0if s != " ":
$mi6f{$x%t R0s += symbol天空博客+?zY)V4jq hy_w'X
s += i
]Z p2|IvV$Xy0return s
WB/}eEo2hE0
E+d ip \5l$u k0#用于测试的模块
(bPIk{O,v,z aEy9z0if __name__=='__main__':天空博客2S'b8Kh.K5b uk
con = db("localhost" , "root" , "xxxxxxxxxxx")
Ye*kJ0Xqw0con.db_execute_SQL("CREATE DATABASE books")
XAH/`y2B0con.db_use("books")
7j/U/i4ss5{0con.db_create_table("books" , "id int" , "Title CHAR(20)" , "Author CHAR(20)")
^Hy)[3U z0con.db_insert("books" , '3' , "'dd'" , '"LeYan"')天空博客(dR2f Q.ObM7rry0?
con.db_insert("books" , "4" , '"JanusLe"' , '"fff"')
uhY]#c.Z6UI+d0print con.db_select("books")
@z3u7G$o5N)alC0con.db_delete("books" , "4")
5q.D-u8Zd |0print con.db_select("books")
(?n b(y7QI'v0con.db_update("books" , "3" , 'Author = "NoName"')天空博客"|X7y7d;C,DUqe
print con.db_select("books")天空博客]#g&{6V WS.T
con.db_alter_table("books" , "ADD" , "tttt varchar(20)")天空博客#[)qDd.kDup
print con.db_describe("books")天空博客*f,f;QghMx{,z
con.db_alter_table("books" , "DROP" , "tttt")天空博客s%et.[4~'hE
print con.db_describe("books")
;OJ)B/M1P0con.db_close()天空博客(x;EP7ob'?l|*^1j
天空博客3jmdF8F

(\:me0[3W0
i u_N"a0天空博客5nuQ(foh] i

.j qrz+u.b0天空博客5A#GAh g(Z9O5E

YP*|V0z0

TAG: 程序设计

 

评分:0

我来说两句

显示全部

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

日历

« 2010-03-21  
 123456
78910111213
14151617181920
21222324252627
28293031   

数据统计

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

RSS订阅

Open Toolbar