栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

【Python学习笔记】数据库应用

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【Python学习笔记】数据库应用

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/689294.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号