Python案例教学之Mysql数据库的数据导入与导出 -CSV文件【第九课】

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 将csv数据导入数据库时出现‘The used command is not allowed with this MySQL version’错误,网上说是从本地导入文件的参数没有打开,在mysql.data升级之后,为了安全考虑,默认不允许加载本地文件数据。查找了好几个方法嫌麻烦,突然想起了老师原来讲过! 只需在连接数据库时添加local_infile:1就可以解决。

1、将上述学生信息存入数据库中,表名为tb_score,读取该文件,用合适的数据类型存储文件内容,并打印输出所有内容。

在这里插入图片描述

1.首先创建数据库!

在这里插入图片描述

2.创建表

连接 StdDB数据库

config = {'host': 'localhost',
'port': 3306,
'user': 'root',
'passwd': '1414141',
'db' : 'StDB'
}
conn = pymysql.connect(**config)

执行 SQL 创建 表tb_score

cursor = conn.cursor()
sql = "CREATE TABLE tb_score(ID INT NOT NULL, name VARCHAR(20) NULL,score INT NULL, PRIMARY KEY (ID))"
cursor.execute(sql)
conn.close()

将数据用多维列表方式存储在内存中

ls = []
ls.append([10001, "小明", 90])
ls.append([10002, "小白", 85])
ls.append([10003, "小兰", 83])
ls.append([10004, "小张", 92])
ls.append([10005, "小赵", 81])

多条数据插入数据库中

cursor = conn.cursor()
sql = "insert into tb_score(ID,name,score) values({0},'{1}',{2})"
try:
    for line in ls:
        cursor.execute(sql.format(*line))
    conn.commit()
except:
    conn.rollback()
finally:
    conn.close()

读取数据库中数据

cursor = conn.cursor()
sql = "select * from tb_score"
cursor.execute(sql)
rows = cursor.fetchall()
ls2 = list(map(list, rows))
conn.close()
print(ls2)

在这里插入图片描述

(1)插入一条学生记录信息:学号:10006,姓名:小花,成绩:92

插入一条数据

ls3 = [10006, "小花", 92]
cursor = conn.cursor()
sql = "insert into tb_score(ID,name,score) values({0},'{1}',{2})"
try:
    cursor.execute(sql.format(*ls3))
    conn.commit()
except:
    conn.rollback()
finally:
    conn.close()

在这里插入图片描述

(2)打印输出学生成绩在90分以下的所有学生信息

根据条件读取数据库的信息

cursor = conn.cursor()
sql = "select ID,name,score from tb_score where score<{0}"
cursor.execute(sql.format(90))
rows = cursor.fetchall()
rows = list(map(list, rows))
print(rows)

在这里插入图片描述

(3)删除小明的成绩

删除数据库中的数据

cursor = conn.cursor()
sql = " delete from tb_score where name=%s "
try:
    cursor.execute(sql, ["小明"])
    conn.commit()
except:
    conn.rollback()

在这里插入图片描述

实验题目:csv文件导入数据库

将StudentInfo.csv文件中的信息导入数据库StudentTest

import pymysql
# 连接 StudentTest数据库
config = {'host': 'localhost',
'port': 3306,
'user': 'root',
'passwd': '1414141',
'db' : 'StudentTest',
'local_infile': 1
}
conn = pymysql.connect(**config)
 # 执行 SQL 创建 表tb_student
 cursor = conn.cursor()
 sql = "CREATE TABLE tb_student(ID INT NOT NULL, name VARCHAR(20) NULL,score INT NULL,final INT NULL, PRIMARY KEY (ID))"
 cursor.execute(sql)
 conn.close()
 # CSV数据高效导入 MYSQL
cursor = conn.cursor()
sql = " LOAD DATA LOCAL INFILE '{0}' INTO TABLE {1} CHARACTER SET GBK FIELDS TERMINATED BY ',' LINES TERMINATED BY '\\r\\n' IGNORE 1 LINES "
try:
    cursor.execute(sql.format("D:/studentInfo.csv", "tb_student"))
    conn.commit()
except Exception as e:
    print(e)
    conn.rollback()
cursor = conn.cursor()
sql = "select * from tb_student"
cursor.execute(sql)
rows = cursor.fetchall()
ls2 = list(map(list, rows))
conn.close()
print(ls2)

在这里插入图片描述
在这里插入图片描述

数据库导出到csv文件

数据库StudentTest中的信息导出到csvdata.csv文件中

import pymysql
# 连接 StudentTest数据库
config = {'host': 'localhost',
'port': 3306,
'user': 'root',
'passwd': '1414141',
'db' : 'StudentTest',
'local_infile': 1
}
conn = pymysql.connect(**config)
cursor = conn.cursor()
sql = " select * into outfile '{0}' CHARACTER SET GBK FIELDS TERMINATED BY ',' LINES TERMINATED BY '\\r\\n' from(select '学号','姓名 ','平均成绩','期末成绩' union select * from tb_student) as b  "
try:
    cursor.execute(sql.format("D:/csvdata.csv",))
    conn.commit()
except Exception as e:
    print(e)
    conn.rollback()
conn.close()

在这里插入图片描述
导出成功,查看CSV文件
在这里插入图片描述

出现‘The used command is not allowed with this MySQL version’错误

今天做实验时将csv数据导入数据库时出现‘The used command is not allowed with this MySQL version’错误,网上说是从本地导入文件的参数没有打开,在mysql.data升级之后,为了安全考虑,默认不允许加载本地文件数据。查找了好几个方法嫌麻烦,突然想起了老师原来讲过!
只需在连接数据库时添加local_infile:1就可以解决。

例如:

import pymysql
# 连接 StudentTest数据库
config = {'host': 'localhost',
'port': 3306,
'user': 'root',
'passwd': '12346',
'db' : 'StudentTest'
}
conn = pymysql.connect(**config)

CSV数据导入会出错!

import pymysql
# 连接 StudentTest数据库
config = {'host': 'localhost',
'port': 3306,
'user': 'root',
'passwd': '12346',
'db' : 'StudentTest',
'local_infile': 1
}
conn = pymysql.connect(**config)

这样就不会出错了!

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
11天前
|
关系型数据库 MySQL 数据库
数据库数据恢复—MYSQL数据库文件损坏的数据恢复案例
mysql数据库文件ibdata1、MYI、MYD损坏。 故障表现:1、数据库无法进行查询等操作;2、使用mysqlcheck和myisamchk无法修复数据库。
|
15天前
|
SQL 关系型数据库 MySQL
MySQL导入.sql文件后数据库乱码问题
本文分析了导入.sql文件后数据库备注出现乱码的原因,包括字符集不匹配、备注内容编码问题及MySQL版本或配置问题,并提供了详细的解决步骤,如检查和统一字符集设置、修改客户端连接方式、检查MySQL配置等,确保导入过程顺利。
|
21天前
|
SQL 数据库
GBase8a 数据库集群v953扩容案例问题分享
GBase8a 数据库集群v953扩容案例问题分享
|
21天前
|
SQL 数据库
gbase 8a 数据库 SQL优化案例-关联顺序优化
gbase 8a 数据库 SQL优化案例-关联顺序优化
|
22天前
|
存储 SQL 数据库
Sybase数据恢复—Sybase数据库常见问题之数据库无法启动的恢复案例
Sybase数据库数据恢复环境: Sybase数据库版本:SQL Anywhere 8.0。 Sybase数据库故障&分析: Sybase数据库无法启动。 使用Sybase Central连接报错。 数据库数据恢复工程师经过检测,发现Sybase数据库出现故障的原因是:异常断电造成Sybase数据库无法回写正常数据,导致多个存储页数据不一致,系统表描述和存储表不一致,部分存储页底层数据完全杂乱。
|
23天前
|
Oracle 关系型数据库 数据库
Oracle数据恢复—Oracle数据库文件有坏快损坏的数据恢复案例
一台Oracle数据库打开报错,报错信息: “system01.dbf需要更多的恢复来保持一致性,数据库无法打开”。管理员联系我们数据恢复中心寻求帮助,并提供了Oracle_Home目录的所有文件。用户方要求恢复zxfg用户下的数据。 由于数据库没有备份,无法通过备份去恢复数据库。
|
29天前
|
存储 Oracle 关系型数据库
oracle数据恢复—Oracle数据库文件大小变为0kb的数据恢复案例
存储掉盘超过上限,lun无法识别。管理员重组存储的位图信息并导出lun,发现linux操作系统上部署的oracle数据库中有上百个数据文件的大小变为0kb。数据库的大小缩水了80%以上。 取出&并分析oracle数据库的控制文件。重组存储位图信息,重新导出控制文件中记录的数据文件,发现这些文件的大小依然为0kb。
|
16天前
|
存储 Oracle 关系型数据库
服务器数据恢复—华为S5300存储Oracle数据库恢复案例
服务器存储数据恢复环境: 华为S5300存储中有12块FC硬盘,其中11块硬盘作为数据盘组建了一组RAID5阵列,剩下的1块硬盘作为热备盘使用。基于RAID的LUN分配给linux操作系统使用,存放的数据主要是Oracle数据库。 服务器存储故障: RAID5阵列中1块硬盘出现故障离线,热备盘自动激活开始同步数据,在同步数据的过程中又一块硬盘离线,RAID5阵列瘫痪,上层LUN无法使用。
|
2月前
|
数据处理 Python
Python实用记录(十):获取excel数据并通过列表的形式保存为txt文档、xlsx文档、csv文档
这篇文章介绍了如何使用Python读取Excel文件中的数据,处理后将其保存为txt、xlsx和csv格式的文件。
74 3
Python实用记录(十):获取excel数据并通过列表的形式保存为txt文档、xlsx文档、csv文档
|
1月前
|
存储 Java 关系型数据库
在Java开发中,数据库连接是应用与数据交互的关键环节。本文通过案例分析,深入探讨Java连接池的原理与最佳实践
在Java开发中,数据库连接是应用与数据交互的关键环节。本文通过案例分析,深入探讨Java连接池的原理与最佳实践,包括连接创建、分配、复用和释放等操作,并通过电商应用实例展示了如何选择合适的连接池库(如HikariCP)和配置参数,实现高效、稳定的数据库连接管理。
62 2