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

【Python学习笔记】数据库应用,第1张

【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("请重新输入")

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5689801.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存