Python练习【6】【数据库操作 | 文件读写】

1. 面向对象,文件操作与数据库操作复习题目:

文件score.dat中保存的是100名学生的姓名和Python课、高数和英语成绩。

(1)定义学生类,其中包含姓名、Python课、高数和英语成绩及总分、均分数据成员,成员函数根据需要确定。

(2)读入这名学生的成绩,用对象列表进行存储。

(3)求出各科和总分的最高分。

(4)请按总分的降序(高成绩在前,低成绩在后)排序

(5)在屏幕上显示各科及总分的最高分,排序后的成绩单(包括总分)保存到文件odered_score.dat中。

(6) 将文件中的所有学生信息, 保存在mariadb数据库中;


import pymysql
import random
import os
if not os.path.exists(‘./score.dat‘):
    with open(‘./score.dat‘,‘w+‘) as file:
        for i in range(100):
            file.write(‘St‘+str(i)+‘,‘+‘,‘.join([str(random.randint(20,100))for j in range(3)])+‘\n‘)

# (1)定义学生类,其中包含姓名、Python课、高数和英语成绩及总分、均分数据成员,成员函数根据需要确定。
class Student(object):
    def __init__(self,name,py_score,ma_score,en_score):
        self.name=name
        self.py_score = py_score
        self.ma_score = ma_score
        self.en_score = en_score
    @property
    def sum_score(self):
        return self.py_score+self.ma_score+self.en_score

    @property
    def even(self):
        return self.sum_score/3

# (2)读入这名学生的成绩,用对象列表进行存储。
st1=Student(‘tom‘,13,23,24)
with open(‘./score.dat‘,‘r‘) as file:
    score_data=file.readlines()
    score_li=[]
    for i in score_data:
        oneData=i.rstrip(‘\n‘).split(‘,‘)
        score_li.append(Student(oneData[0],int(oneData[1]),int(oneData[2]),int(oneData[3])))

# (3)求出各科和总分的最高分。
py_max=max([i.py_score for i in score_li])
ma_max=max([i.py_score for i in score_li])
en_max=max([i.py_score for i in score_li])
sum_max=max([i.sum_score for i in score_li])

#(4)请按总分的降序(高成绩在前,低成绩在后)排序
score_li=sorted(score_li,key=lambda x:-x.sum_score)

# (5)在屏幕上显示各科及总分的最高分,排序后的成绩单(包括总分)保存到文件odered_score.dat中。

print("""
python课程最高分:{0}
高等数学课程最高分:{1}
英语课程最高分:{2}
总分最高分:{3}
""".format(py_max, ma_max, en_max, sum_max))
with open(‘./odered_score.dat‘,‘w+‘) as file:
    for i in score_li:
        file.write(‘%s,%s,%s,%s,%s\n‘%(i.name,i.py_score,i.ma_score,i.en_score,i.sum_score))
    file.seek(0,0)

# (6) 将文件中的所有学生信息, 保存在mariadb数据库中;
## 连接数据库
con = pymysql.connect(
    host=‘localhost‘,
    user=‘root‘,
    passwd=‘redhat‘,
    autocommit=True,
    charset =‘utf8‘
)
cur = con.cursor() # 创建游标
cur.execute(‘create database if not exists St_scores‘) # 创建数据库
con.select_db(‘St_scores‘) # 选择对应数据库
cur.execute(‘create table if not exists scores_data(姓名 varchar(20),python float,高等数学 float,英语 float,总分 float)default charset=utf8‘) # 创建表
# 读取文件中的数据并写入数据表
with open(‘./odered_score.dat‘) as file:
    line_data=file.readlines()
    for onedata in line_data:
        data=onedata.rstrip(‘\n‘).split(‘,‘)
        data=[data[0]]+[float(i) for i in data[1:]]
        cur.execute(‘insert into scores_data values("%s",%f,%f,%f,%f)‘%(data[0],data[1],data[2],data[3],data[4]))

原文地址:http://blog.51cto.com/13992211/2343821

时间: 2024-10-02 00:58:45

Python练习【6】【数据库操作 | 文件读写】的相关文章

用Python进行SQLite数据库操作

用Python进行SQLite数据库操作 -----转自:http://www.cnblogs.com/yuxc/archive/2011/08/18/2143606.html 简单的介绍 SQLite数据库是一款非常小巧的嵌入式开源数据库软件,也就是说没有独立的维护进程,所有的维护都来自于程序本身.它是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了.它能够支持Windows/L

[python]用Python进行SQLite数据库操作

用Python进行SQLite数据库操作 1.导入Python SQLITE数据库模块 Python2.5之后,内置了SQLite3,成为了内置模块,这给我们省了安装的功夫,只需导入即可~ import sqlite3 2. 创建/打开数据库 在调用connect函数的时候,指定库名称,如果指定的数据库存在就直接打开这个数据库,如果不存在就新创建一个再打开. cx = sqlite3.connect("E:/test.db") 也可以创建数据库在内存中. con = sqlite3.c

Python零基础入门(12)-------文件读写

数据类型:指向一个特定的文件 .不管是文本或者文档.或者其他媒体文件. 声明方式: open('路径' , '模式' , encoding = '编码'); (1)路径 例如:'C:\\Data\\temp.txt'  斜杠需要转义,所以要写2个斜杠. 加 r 忽略转义  r'C:\Data\temp.txt' (2)模式 区分下文件的形式有2种 [1] 文本 模式有 r  读  read      读取文本 w 写   write      写入文本 ,写模式会将内容替换掉 rw 读写 a  

python小白-day9 数据库操作与Paramiko模块

paramiko模块 SSHClient 用于连接远程服务器并执行基本命令 基于用户名密码连接: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 import paramiko # 创建SSH对象 ssh = paramiko.SSHClient() # 允许连接不在know_hosts文件中的主机 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # 连接服务器 ssh.connect(hostna

Python进行MySQL数据库操作

最近开始玩Python,慢慢开始喜欢上它了,以前都是用shell来实现一些自动化或者监控的操作,现在用Python来实现,感觉更棒,Python是一门很强大的面向对象语言,所以作为一个运维DBA或者运维来说,都应该学会用Python来提高工作效率.下面简单的介绍一下Python DB API MySQLdb 使用Python DB API访问数据库的流程图: 在Centos下安装MySQLdb模板(为了方便演显,我用yum安装,也是最快最省事的安装): yum install MySQL-pyt

Python-Day3 Python基础进阶之集和/文件读写/函数

一.集和 集合是一个无序的,不重复的数据组合,它的主要作用如下: 去重,把一个列表变成集合,就自动去重了 关系测试,测试两组数据之前的交集.差集.并集等关系 1.创建集合 >>> s = set([3,5,9,10]) #创建一个数值集合 >>> t = set("Hello") #创建一个唯一字符的集合 >>> s {9, 10, 3, 5} >>> t {'e', 'H', 'l', 'o'} #集和自动去重

Python笔记四之操作文件

一.字符串方法补充(join.split) join方法: # join方法,连接字符串 1.把一个list变成了字符串 2.通过某个字符把list里面的元素连接起来 # 3.只要是可以循环的都可以连接起来 l=['a','b','c'] sl=str(l) #sl="['a','b','c']" str()把对象转换成一个字符串,整个list变成一个字符串,包含中括号 print(l,type(l)) print(sl,type(sl)) res=''.join(l)#以空连接起来,

python学习之数据库操作

一.数据库基本操作 数据库操作: 查看存储引擎: show engines; 查看数据库: show databases; 或者show create database oldboy\G 创建数据库: create database oldboy default charset=utf8; 删除数据库: drop database oldboy; 进入数据库:  use oldboy; 数据表操作: 创建数据表: create table tb_emp1 (     -> id int(11),

【转】用Python进行SQLite数据库操作

简单的介绍 SQLite数据库是一款非常小巧的嵌入式开源数据库软件,也就是说没有独立的维护进程,所有的维护都来自于程序本身.它是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了.它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl.C#.PHP.Java等,还有ODBC接口,同样比起Mysql.PostgreSQL这两款开源世