#本文一切代码及理论均来自于郑秋生、夏敏捷二位老师主编《Python项目案例发 从入门到实践》一书,本人仅做微改。创作本文的目的仅为总结本人的学习过程和成果,借此巩固。可能存在许多疏漏之处,还请各位同道多多批评指正。
今天学的是数据库应用一个章节,Python的数据库 *** 作区别于其他语言应用最大的特点,就是需要链接数据库也是可以进行增删改查(好像是一句废话,谁的数据库 *** 作不是这样啊)
连接数据库 *** 作对于任何语言都是很重要的,毕竟所有除了代码以外的东西不可能都写在代码上,那不是程序,就是个大学生的课设(一般来说毕设都不配)级别,中看不中用。
然后就是今天的主角,Python的数据库应用。
众所周知,Python的最大优势在于那几乎无穷无尽的模块,需要什么引用什么模块就好。那么我们用的是什么数据库呢~~~
自Python 2.5版本后,Python内置了Sqlite3模块,使得我们如果希望在Python中使用Sqlite就不需要安装任何东西,在使用时,只需要简单地
import sqlite3
之后是连接数据库。
在我了解的语言中,Python链接数据库大概是最容易的,只需要一句(有则连接,无则创建)
con = sqlite3.connect("Database file Address")
下一步就是创建一个游标对象。
什么是游标对象?游标对象就是【能够灵活地对表中检索出的数据进行 *** 作】,我一般愿意把游标对象简单地理解为指针(其实自己我理解的是快递员,感觉太不学术性了就告诉你们理解成指针吧)
cursor = con.cursor()
有了指针(快递员),我们就能够对数据库(小区)中的每一个表(居民楼)内的每一个条目(家庭)里的每一项数据(住户)进行精准的 *** 作(派送)————当然了,现在都是送到快递站或者快递柜,那就是后话了。
具体 *** 作的话我也是简单地讲几个最基本的 *** 作列举在这里,详细的 *** 作太多了,还需要各位在实践中进行学习,实践是认识的基础,是认识的来源和认识的目的。。。。
#对数据库的 *** 作主要就是用execute+Sql语句,也有多次 *** 作的executemany语句和执行脚本的executescript语句,使用方法同理 cur.execute(sql,[paramaters]) #对数据库的结果查询使用fetchall语句,也有多次查询的fetchallmany语句和fetchall语句 cur.execute("select * from Residential_Building) print(cur.fetchall())
有了这些知识,数据库应用的第一阶段学习就结束了,你可以奖励自己喝口可乐然后吃根辣条了!(是的,我在喝可乐吃辣条)对了,别忘了趁休息时间熟悉一下Sql语句哦~
好了好了,休息结束!
接下来是“提交” 和 “回滚”
也都很好理解,提交就是讲 *** 作上交数据库(一般来说每一句 *** 作都要commit一下)回滚就是撤回(只要不是提交都可以撤回)当然了,理论上这些需要根据事件的“隔离性”决定,但是我理解的不深,就不误记载于了此处了。
con.commit() #事件提交 con.rollback() #事件回滚
鲁迅先生说过:人吃完辣条就要擦嘴,数据库也是一样, *** 作完就要给程序“擦嘴”——就是关闭数据库。
关闭数据库分为关闭Cursor对象和关闭Connection对象。
如果不关闭数据库,那么你的系统中就一直有一个开启的数据库!
好像是废话,但是并不是,因为一直有一个数据库没关闭,是会影响到电脑的速度的!(当然了,对小系统来说不会有什么影响)
cur.close() #关闭Cursor对象 con.close() #关闭Connestion对象
很棒!你已经完成了基本的理论 *** 作,接下来试着简单的 *** 作一下吧!
创建数据库(写完再来看哦(づ ̄3 ̄)づ╭❤~)
import sqlite3 con = sqlite3.connect("E: firstDB.db") cur = con.corsor() cur.execute("create table book(id primary key,price,name)")
增(说了写完再来看(ಥ﹏ಥ))
hel[1].execute("insert into Address (id,name,password,address,number)values(?,?,?,?,?)",(person[0],person[1],person[2],person[3],person[4])) hel[1].commit()
删(你再不写完就来看我真要生气了[○・`A´・ ○])
hel[1].execute("delete from Address where id ="+deleteid) hel[1].commit()
改(没完了是吧是吧是吧[○・`Д´・ ○])
hel[1].execute("update Address set id = ?,name = ?,password = ?,address = ?,number = ? where id ="+changeid,(person[0],person[1],person[2],person[3],person[4])) hel[1].commit()
查(算了算了,随你们吧╮(╯▽╰)╭)
cur.execute("select * from Address where id ="+selectid) hel[1].commit()
说实话,其实就是对Sql的一个简单 *** 作,接下来我们就可以进入最重要的阶段!实战!
我们的实战项目和书中相同,就是做一个“同学录”(就是小学的时候到处追着人同学屁股后面让人家写的那个——尤其是用来要自己最喜欢的女生联系方式)
其实还有一个答题系统,但是其实就这点东西(主要是我实在困了——所以为什么我大半夜十一点多不睡觉弄学习笔记我也是有够无聊),后期我会把代码放到文件里,里面注解很多的,大家应该能自己理解!)
import sqlite3 #打开数据库 def opendb(): conn = sqlite3.connect("E:firstDB.db") cur = conn.execute("create table if not exists Address(id varchar(50) primary key ,name varchar(50),password varchar(50),address varchar(50),number varchar(50))") return cur,conn #展示全部信息 def showdata(): print("正在加载中.............................编写者QQ:320937057,欢迎一起学习Python.............................") hel = opendb() cur = hel[1].cursor() cur.execute("select * from Address") res = cur.fetchall() for line in res: for h in line: print(h), print print("End!") cur.close() #接收信息 def info(): id = input("请输入学号:") name = input("请输入姓名:") password = input("请输入密码:") address = input("请输入地址:") number = input("请输入手机号码:") return id,name,password,address,number #增加信息 def insert(): welcome = """添加功能正在加载中...........................编写者QQ:320937057,欢迎一起学习Python...........................""" print(welcome) person = info() hel = opendb() hel[1].execute("insert into Address (id,name,password,address,number)values(?,?,?,?,?)",(person[0],person[1],person[2],person[3],person[4])) hel[1].commit() print(welcome) showdata() hel[1].close() #删除信息 def deletedb(): welcome = """删除功能正在加载中...........................编写者QQ:320937057,欢迎一起学习Python...........................""" print(welcome) deleteid = input("请输入希望删除的学号:") hel = opendb() hel[1].execute("delete from Address where id ="+deleteid) hel[1].commit() print(welcome) showdata() hel[1].close() #修改信息 def alter(): welcome = """修改功能正在加载中...........................编写者QQ:320937057,欢迎一起学习Python...........................""" print(welcome) changeid = input("请输入希望修改学员的学号:") hel = opendb() person = info() hel[1].execute("update Address set id = ?,name = ?,password = ?,address = ?,number = ? where id ="+changeid,(person[0],person[1],person[2],person[3],person[4])) hel[1].commit() showdata() hel[1].close() #查询数据 def select(): welcome = """查询功能正在加载中...........................编写者QQ:320937057,欢迎一起学习Python...........................""" print(welcome) selectid = input("请输入希望查询学员的学号:") hel = opendb() cur = hel[1].cursor() cur.execute("select * from Address where id ="+selectid) hel[1].commit() welcome1 = """查询功能已完成...........................编写者QQ:320937057,欢迎一起学习Python...........................""" print(welcome1) for row in cur: print(row[0],row[1],row[2],row[3],row[4]) hel[1].close() #是否继续 def ifcontinue(a): ifn = input("是否继续(Y OR N):") if ifn == "Y": a = 1 elif ifn == "N": a = 0 return a if __name__ =="__main__": flag = 1 while flag: welcome = """欢迎使用本系统...........................编写者QQ:320937057,欢迎一起学习Python...........................""" print(welcome) choicetext=""" 请您选择进一步 *** 作: 1. 添加 2. 删除 3. 修改 4. 查询 编写者QQ:320937057,欢迎一起学习Python 请输入: """ choice = input(choicetext) if choice == "1": insert() ifcontinue(flag) elif choice == "2": deletedb() ifcontinue(flag) elif choice == "3": alter() ifcontinue(flag) elif choice == "4": select() ifcontinue(flag) else: print("请重新输入")
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)