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

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 将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)

这样就不会出错了!

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
15天前
|
Python
python集合的创建案例分享
【4月更文挑战第11天】在Python中,通过大括号或`set()`函数可创建集合。示例包括:使用大括号 `{}` 创建带元素的集合,如 `{1, 2, 3, 4, 5}`;使用 `set()` 函数从列表转换为集合,例如 `set([1, 2, 3, 4, 5])`,以及创建空集合 `set()`。当元素有重复时,集合会自动去重,如 `set([1, 2, 2, 3, 4, 4, 5])`。但尝试将不可哈希元素(如列表、字典)放入集合会引发 `TypeError`。
17 1
|
19天前
|
Python
Python文件操作学习应用案例详解
【4月更文挑战第7天】Python文件操作包括打开、读取、写入和关闭文件。使用`open()`函数以指定模式(如'r'、'w'、'a'或'r+')打开文件,然后用`read()`读取全部内容,`readline()`逐行读取,`write()`写入字符串。最后,别忘了用`close()`关闭文件,确保资源释放。
18 1
|
24天前
|
Python
【python】python跨文件使用全局变量
【python】python跨文件使用全局变量
|
1天前
|
JSON JavaScript 数据格式
python遍历目录文件_结合vue获取所有的html文件并且展示
python遍历目录文件_结合vue获取所有的html文件并且展示
4 0
|
1天前
|
缓存 NoSQL 关系型数据库
在Python Web开发过程中:数据库与缓存,MySQL和NoSQL数据库的主要差异是什么?
MySQL与NoSQL的主要区别在于数据结构、查询语言和可扩展性。MySQL是关系型数据库,依赖预定义的数据表结构,使用SQL进行复杂查询,适合垂直扩展。而NoSQL提供灵活的存储方式(如JSON、哈希表),无统一查询语言,支持横向扩展,适用于处理大规模、非结构化数据和高并发场景。选择哪种取决于应用需求、数据模型及扩展策略。
10 0
|
3天前
|
人工智能 Python
【AI大模型应用开发】【LangChain系列】实战案例1:用LangChain写Python代码并执行来生成答案
【AI大模型应用开发】【LangChain系列】实战案例1:用LangChain写Python代码并执行来生成答案
7 0
|
7天前
|
SQL 关系型数据库 MySQL
Python与MySQL数据库交互:面试实战
【4月更文挑战第16天】本文介绍了Python与MySQL交互的面试重点,包括使用`mysql-connector-python`或`pymysql`连接数据库、执行SQL查询、异常处理、防止SQL注入、事务管理和ORM框架。易错点包括忘记关闭连接、忽视异常处理、硬编码SQL、忽略事务及过度依赖低效查询。通过理解这些问题和提供策略,可提升面试表现。
26 6
|
8天前
|
存储 Python
用Python实现批量下载文件——代理ip排除万难
用Python实现批量下载文件——代理ip排除万难
|
8天前
|
JSON 关系型数据库 数据库
《Python 简易速速上手小册》第6章:Python 文件和数据持久化(2024 最新版)
《Python 简易速速上手小册》第6章:Python 文件和数据持久化(2024 最新版)
36 0
|
8天前
|
机器学习/深度学习 人工智能 自然语言处理
总结几个GPT的超实用之处【附带Python案例】
总结几个GPT的超实用之处【附带Python案例】