
#本文一切代码及理论均来自于郑秋生、夏敏捷二位老师主编《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条)