实验3 Python文件与数据库

实验3.1:文本文件操作

题目描述:编程新建一个名为test.txt文件,存放在代码文件所在目录中,并且打开该文件。然后写入如图1-1所示内容到文件中。最后分别读取5个字符、读取第一行字符串、读取第三行的字符串,读取所有字符串。如图1-2所示。
在这里插入图片描述

提示:使用文件操作函数open()、write()、read()、readline()、readlines()、seek()、tell()、close()。

f = open("test.txt", "w+")
for i in range(1, 6):
    f.write("chriswpf"+str(i)+"\n")

f.close()

f = open("test.txt", "r")
print("读5个字符是:"+f.read(5))
f.seek(0)
print("读一行字符串是:"+f.readline())
f.seek(f.tell()*2)
print(("读第三行字符串是:"+f.readline()))
f.seek(0)
print("读所有行字符串是:")
list = f.readlines()
for line in list:
    print(line[:-1], end=' ')
f.close()

实验3.2:CSV文件操作

题目描述:编程新建一个名为test.csv文件,存放在代码文件所在目录中,并且打开该文件。然后写入如图2-1所示内容到文件中。最后读取所有文件数据,如图2-2所示。
提示:import csv #csv是内建模块,直接使用

在这里插入图片描述

import csv
list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
f = open(r'test.csv', 'w+', newline='')
cw=csv.writer(f, dialect='excel')
len = len(list)
for i in range(0,len):
    cw.writerow(list[i])
f.close()
cr = csv.reader(open(r"test.csv",encoding="utf-8"))
for row in cr:
    print(row)

实验3.3:Excel文件操作

题目描述:编程新建一个名为test.xls文件,存放在代码文件所在目录中,并且打开该文件。然后通过xlwt模块写入如图3-1所示内容到文件中。最后通过xlrd模块读取所有文件数据,如图3-2所示。
提示:安装xlrd读模块,如图3-3,安装xlwt写模块,如图3-4。
在这里插入图片描述

在这里插入图片描述

import xlwt
import xlrd
book = xlwt.Workbook(encoding="utf-8")
sheet = book.add_sheet('sheet_test')
sheet.write(0,0,'学号')
sheet.write(0,1,'姓名')
sheet.write(0,2,'年龄')
sheet.write(0,3,'班级')
sheet.write(1,0,'2018001')
sheet.write(2,0,'2018002')
sheet.write(3,0,'2018003')
sheet.write(4,0,'2018004')
sheet.write(5,0,'2018005')
sheet.write(1,1,'张珊')
sheet.write(2,1,'李斯')
sheet.write(3,1,'王斌')
sheet.write(4,1,'赵柳')
sheet.write(5,1,'梦之')
sheet.write(1,2,'女')
sheet.write(2,2,'男')
sheet.write(3,2,'男')
sheet.write(4,2,'女')
sheet.write(5,2,'男')
sheet.write(1,3,'18')
sheet.write(2,3,'19')
sheet.write(3,3,'19')
sheet.write(4,3,'18')
sheet.write(5,3,'17')
sheet.write(1,4,'计算机2002')
sheet.write(2,4,'计算机2002')
sheet.write(3,4,'计算机2002')
sheet.write(4,4,'计算机2002')
sheet.write(5,4,'计算机2002')

book.save(r'test.xls')

wb = xlrd.open_workbook(r"test.xls")
print("student信息如下:")
for s in wb.sheets():
    for i in range(s.nrows):
        print(s.row(i)[0].value,end=' ')
        print(s.row(i)[1].value,end=' ')
        print(s.row(i)[2].value,end=' ')
        print(s.row(i)[3].value,end=' ')
        print(s.row(i)[4].value,end=' ')
        print()

    



实验3.4:Word文件操作

题目描述:编程新建一个名为test.doc文件,存放在代码文件所在目录中,并且打开该文件。然后写入如图4-1所示内容到文件中。最后分别读取5个字符、读取第一行字符串、读取第三行的字符串,读取所有字符串。如图4-2所示。
在这里插入图片描述

提示:使用文件操作函数open()、write()、read()、readline()、readlines()、seek()、tell()、close()。

f = open("test.doc", "w+")
for i in range(0, 4):
    f.write("hzau"+str(i+1)+'\n')

f.close()
f = open("test.doc", 'r')
print("读6个文字是:"+f.read(6))
f.seek(0)
print("读第一行文字是:"+f.readline())
f.seek(f.tell()*2)
print("读取第三行文字是:"+f.readline())
f.seek(0)
print("读取所有行文字是:")
list = f.readlines()
for s in list:
    print(s[:-1], end=' ')

f.close()

实验3.5:SQLite数据库创建

题目描述:创建一个测试数据库test.db,该数据库中包含一张student表,该数据表含有五个字段学号sid、姓名sname、性别ssex、年龄sage、班级sclass。
提示:
(1)第一步:设置系统环境变量PATH值。首先从SQLite网站上下载SQLite数据库工具文件sqlite3.exe。(或老师直接提供),将sqlite3.exe拷贝到Python安装目录Scripts子目录下(如C:\Python\Python37\Scripts\,注意不同机器Python安装目录不同),然后设置系统环境变量PATH,新增一个值为该完整子目录。如图5-1和图5-2红色框所示。
在这里插入图片描述

(2)第二步:创建名为test.db数据库文件
进入cmd命令提示符程序,输入“cd Desktop”命令进入桌面目录(如:C:\Users\kalof\Desktop\),按照图5-3所示在分别依次输入sqlite3 test.db 和 .open test.db 两个命令,桌面上就创建了一个test.db数据文件,如图5-4所示。(注意:退出sqlite3的命令是“Ctrl + Z” )
在这里插入图片描述

(3)第三步:创建名为student数据表。获取SQLite数据库创建工具SQLiteStudio.exe。(老师直接提供),打开SQLiteStudio.exe,连接桌面上test.db,然后再建立student表,分别按图5-5和图5-6所示建立五个字段值,输入四个学生基本信息记录。到此数据库test.db建立完毕,为接下来实验3.6提供Python对SQLite数据库操作基础。
在这里插入图片描述

(4)第四步:查看student数据表信息
点击“cmd命令提示符”程序,进入“cmd命令提示符”程序界面,如图5-7所示,通过cd命名,进入test.db数据库文件所在桌面目录(如C:\Users\XIAOMI\Desktop),输入“sqlite3”命令启动SQLite程序,在SQLite提示符“sqlite>”下,输入” .open test.db”打开test.db数据库,输入“.table”查看当前test数据库中数据表student,输入“.schema”查看当前student表的结构,输入“select * from student;””查看学生信息表,如图所示。(注意:SQL语言最后英文冒号;不能省略,否则SQL执行出错。)
在这里插入图片描述

实验3.6:SQLite数据库操作

题目描述:在实验3.5的基础上,分别完成数据添加、删除、修改和查询操作。
提示:通过SQL语句insert、delete、update、select分别实现对应数据操作功能。Python操作SQLite数据库程序代码的测试结果如下图6-1所示。
在这里插入图片描述

import sqlite3
co = sqlite3.connect(r"test.db")
cu = co.cursor()
#INSERT
cu.execute(
    "INSERT INTO Course(sid,sname,ssex,sage,sclass) VALUES ('2020007','梦梦','男','17','计算机2002')")
#SELECT
cursor = cu.execute("SELECT sid,sname,ssex,sage,sclass from Course")
for row in cursor:
    print ("sid= ",row[0])
    print("sname=",row[1])
    print("ssex=",row[2])
    print("sage=",row[3])
    print("sclass=",row[4])

#UPDATE
cu.execute("UPDATE Course set sage=20 where sid = 1")

co.commit()  # 提交数据
#打印
cursor = cu.execute("SELECT sid,sname,ssex,sage,sclass from Course")
for row in cursor:
    print ("sid= ",row[0])
    print("sname=",row[1])
    print("ssex=",row[2])
    print("sage=",row[3])
    print("sclass=",row[4])
#Delete
cu.execute("DELETE form Course where sid=2;")
co.commit()
#打印
cursor = cu.execute("SELECT sid,sname,ssex,sage,sclass from Course")
for row in cursor:
    print ("sid= ",row[0])
    print("sname=",row[1])
    print("ssex=",row[2])
    print("sage=",row[3])
    print("sclass=",row[4])
cu.close()
co.close()

实验3.7:MySQL数据库创建

题目描述:创建一个测试数据库test.db,该数据库中包含一张teacher表,该数据表含有六个字段教工号tid、姓名tname、性别tsex、年龄tage、职称ttitle、院系tdept。
提示:
(1)第一步:安装MySQL数据库工具包。首先从MySQL网站上下载MySQL数据库工具安装文件mysql-installer-community-8.0.15.0.msi。(或老师直接提供),双击安装该文件,安装过程中除登录密码设置为“1234”外,其他设置均不改变。如图图7-1和7-2所示。
在这里插入图片描述

一路“Next”安装完毕后,Windows10系统“开始”菜单中则会出现如下图所示MySQL菜单项,其中红色标注的两项分别是数据库目录创建和数据库及表结构查看工具。如图7-3所示。

在这里插入图片描述

(2)第二步:创建名为test数据库目录。点击“MySQL 8.0 Command Line Client”,进入初始程序界面如下图7-4所示,输入密码“1234”(此处密码是上一步安装MySQL数据库工具文件时设置的登录密码),回车进入MySQL启动界面,当出现“mysql>”提示符如图7-5表示MySQL启动成功。然后输入创建数据库命令“create database if not exists test;”,回车显示“Query Ok,…”,如图7-6所示则表示建立数据库目录成功。最后进入MySQL数据库文件所在目录,其路径是“C:\ProgramData\MySQL\MySQL Server 8.0\Data\”,在该目录下可以看到新建的名为test文件,如图7-7所示,此时test数据库目录建立完毕。(注意:退出mysql进程的命令是“\quit”)

在这里插入图片描述

在这里插入图片描述

(3)第三步:创建名为teacher数据表
点击“MySQL Workbench 8.0 CE”可视化工具,进入初始程序界面如下图7-8所示,双击红色区域,弹出“Connect to MySQL Server”对话框,如图7-9,输入密码“1234”,进入MySQL Workbench可视化工作台,点击“Schemas”选项,可以看到“”test”数据库(注意MySQL中Schema等同Database,即为数据库),如图7-10所示。双击“test”,展开四项“Tables”、“View”、“Stored Procedures”、“Functions”。点击“table”,右键点击“Create Table”,按照如图7-11和7-12所示分别建立“teacher”数据表及其六个字段值,点击“”Apply”按钮完成“teacher”表的创建,最后输入五个教师基本信息记录。到此数据库test建立完毕,为接下来实验3.8提供Python对MySQL数据库操作基础。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(4)第四步:查看teacher数据表信息
点击“MySQL 8.0 Command Line Client”,输入密码“1234”,回车启动MySQL,在“mysql>”命令提示符下,输入“use test;”打开数据库,再输入“select * from teacher;”查看教师基本信息表,如图7-13所示。(注意:SQL语言最后英文冒号;不能省略,否则SQL执行出错。)
在这里插入图片描述

实验3.8:MySQL数据库操作

题目描述:在实验3.8的基础上,分别完成数据添加、删除、修改和查询操作。
提示:通过SQL语句insert、delete、update、select分别实现对应数据操作功能。安装pymysql模块方法如下图8-1和8-2所示。
(1)设置环境变量Path。新建两个值如“C:\Python\Python36\”和“C:\Python\Python36\Scripts\”。然后确认Python安装目录的子目录Scripts中是否有工具包文件easy_install.exe。
(2)安装pymysql模块。进入“cmd”程序,运行命令“easy_install pymysql”即可。其中安装好的pymysql模块文件是pymysql-0.9.3-py3.6.egg,存放在路径“C:\python\python36\lib\site-packages\”中。

图8-1                                     图8-2

(3)若Python程序调用pymysql数据库操作函数出错,则考虑使用pip3 install pymysql命令或pip install pymysql命令安装pymysql模块。直至测试成功为止。如图8-3所示

图8-3

(4)Python操作MySQL数据程序代码的测试结果如下图所示。如图8-4所示。

图8-4

import pymysql

def get_conn():
    conn = pymysql.connect('localhost','root', 'meng520dawn', 'test1',charset="utf-8")
    return conn

def insert_many(sql, args):
    conn = get_conn()
    cur = conn.cursor()
    result = cur.executemany(query=sql, args=args)
    print(result)
    conn.commit()
    cur.close()
    conn.close()
def update(sql,args):
    conn = get_conn()
    cur = conn.cursor()
    result = cur.execute(sql,args)
    print(result)
    conn.commit()
    cur.close()
    conn.close()
 
def delete(sql,args):
    conn = get_conn()
    cur = conn.cursor()
    result = cur.execute(sql,args)
    print(result)
    conn.commit()
    cur.close()
    conn.close()

def query(sql,args):
    conn = get_conn()
    cur = conn.cursor()
    cur.execute(sql,args)
    results = cur.fetchall()
    print(type(results))  # 返回<class 'tuple'> tuple元组类型

    for row in results:
        print(row)
        id = row[0]
        name = row[1]
        age = row[2]
        print('id: ' + str(id) + '  name: ' + name + '  age: ' + str(age))
        pass

    conn.commit()
    cur.close()
    conn.close()


if __name__ == '__main__':
    sql = 'insert into test_student_table VALUES (%s,%s,%s)'
    args = [(3, 'li', 11), (4, 'sun', 12), (5, 'zhao', 13)]
    insert_many(sql,args)
    sql = 'UPDATE test_student_table SET NAME=%s WHERE id = %s;'
    args = ('zhangsan', 1)
    update(sql, args)
    sql = 'DELETE FROM test_student_table WHERE id = %s;'
    args = (1,) # 单个元素的tuple写法
    delete(sql,args)
    sql = 'SELECT  * FROM test_student_table;'
    query(sql,None)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值