【数据库学习】——Python实现mysql数据库SQL文件生成和导入

目录

1、将mysql数据导出到SQL文件中(数据库存在的情况)

2、将现有的sql文件数据导入到数据库中(前提数据库存在) 

 3、利用Navicat导出SQL文件和导入SQL文件

1)从数据库导出SQL文件

2)导入SQL文件到数据库 


1、将mysql数据导出到SQL文件中(数据库存在的情况)

主要需要修改数据库的相关信息,端口号、用户名、密码等

其中数据库得存在,不然会报错 

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2022/5/29 13:06
# @Author  : @linlianqin
# @Site    : 
# @File    : exportSqlFile.py
# @Software: PyCharm
# @description:导出数据库文件sqlimport osclass InitSql(object):sql_file = "A.sql"def import_server_db(self):mysqldump_commad_dict = {'dumpcommad': 'mysqldump ', 'server': 'localhost', 'user': 'root','password': 'root', 'port': 3306, 'db': 'studentmanagersystem'}# mysqldump 命令sqlfromat = "mysqldump --column-statistics=0 -h%s -u%s -p%s -P%s %s > %s"# 生成相应的sql语句sql = (sqlfromat % (mysqldump_commad_dict['server'],mysqldump_commad_dict['user'],mysqldump_commad_dict['password'],mysqldump_commad_dict['port'],mysqldump_commad_dict['db'],self.sql_file))print("执行的导出数据库的sql:" + sql)result = os.system(sql)return resultif __name__ == '__main__':initSql = InitSql()initSql.import_server_db()

生成的sql文件如下所示:

-- MySQL dump 10.13  Distrib 8.0.29, for Win64 (x86_64)
--
-- Host: localhost    Database: studentmanagersystem
-- ------------------------------------------------------
-- Server version  8.0.29/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!50503 SET NAMES utf8mb4 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;--
-- Table structure for table `studenttable`
--DROP TABLE IF EXISTS `studenttable`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `studenttable` (`number` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,`name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,`sex` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,`classes` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,`floor` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,`room` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,`tel` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,`money` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,PRIMARY KEY (`number`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=DYNAMIC;
/*!40101 SET character_set_client = @saved_cs_client */;--
-- Dumping data for table `studenttable`
--LOCK TABLES `studenttable` WRITE;
/*!40000 ALTER TABLE `studenttable` DISABLE KEYS */;
INSERT INTO `studenttable` VALUES ('2201','刘同学','男','1班','A1','101','1112','30'),('2202','张同学','男','2班','A2','211','1121','13'),('2203','管同学','女','2班','A3','121','1122','11'),('2204','管同学','女','2班','A3','121','1122','11'),('2205','刘同学','女','2班','A3','121','1122','11'),('2206','张同学','男','2班','A2','211','1121','13'),('2208','杨同学','男','1班','A1','101','1112','30'),('2209','蔡同学','男','1班','A1','101','1112','30');
/*!40000 ALTER TABLE `studenttable` ENABLE KEYS */;
UNLOCK TABLES;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;-- Dump completed on 2022-06-05  0:30:03

2、将现有的sql文件数据导入到数据库中(前提数据库存在) 

这里的话其实就是将SQL文件进行分割成一条条SQL语句,然后顺序执行即可

import pymysql
from pathlib import Pathclass ConnectMsql:def __init__(self, host='localhost', port=3306, user='root',password='root', database="studentmanagersystem", filename: str = "studenttable.sql"):""":param host:        域名:param port:        端口:param user:        用户名:param password:    密码:param database:    数据库名:param filename:    文件名称"""self._host: str = hostself._port: int = portself._user: str = userself._password: str = passwordself._database: str = databaseself._file_path = Path(__file__).parent.joinpath(filename)def _show_databases_and_create(self):"""查询数据库是否存在,不存在则进行新建操作:return:"""connection = pymysql.connect(host=self._host, port=self._port, user=self._user, password=self._password,cursorclass=pymysql.cursors.DictCursor)with connection:with connection.cursor() as cursor:cursor.execute('show databases;')result = cursor.fetchall()results = self._database not in tuple(x["Database"] for x in result)if results:with connection.cursor() as cursor:cursor.execute(f'create database {self._database};')with connection.cursor() as cursor:cursor.execute('show databases;')result = cursor.fetchall()results = self._database in tuple(x["Database"] for x in result)return results if results else resultelse:return Truedef _export_databases_data(self):"""读取.sql文件,解析处理后,执行sql语句:return:"""if self._show_databases_and_create() is True:connection = pymysql.connect(host=self._host, port=self._port, user=self._user, password=self._password,database=self._database, charset='utf8')# 读取sql文件,并提取出sql语句results, results_list = "", []with open(self._file_path, mode="r+", encoding="utf-8") as r:for sql in r.readlines():# 去除数据中的“\n”和“\r”字符sql = sql.replace("\n", "").replace("\r", "")# 获取不是“--”开头且不是“--”结束的数据if not sql.startswith("--") and not sql.endswith("--"):# 获取不是“--”的数据if not sql.startswith("--"):results = results + sql# 根据“;”分割数据,处理后插入列表中for i in results.split(";"):if i.startswith("/*"):results_list.append(i.split("*/")[1] + ";")# print(i.split("*/")[1] + ";")else:results_list.append(i + ";")# print(i + ";")# 执行sql语句with connection:with connection.cursor() as cursor:# 循环获取sql语句for x in results_list[:-1]:if x != ";":print(x)# 执行sql语句cursor.execute(x)# 提交事务connection.commit()else:return "sql全部语句执行成功 !"@propertydef sql_run(self):"""执行方法:return:"""return self._export_databases_data()if __name__ == '__main__':res = ConnectMsql().sql_runprint(res)

 利用Navicat软件可视化数据库,可以看到导入SQL文件成功

 3、利用Navicat导出SQL文件和导入SQL文件

1)从数据库导出SQL文件

选择需要导出的数据表——右键——转储为SQL文件——数据和结构

这样就可以将数据表的结构和数据都一起保存在SQL文件中

2)导入SQL文件到数据库 

右键选中需要导入的数据库——运行SQL文件

 点击开始后,即开始运行SQL文件,出现下述字样表明导入SQL文件成功

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/255332.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【重磅】Google官方推出了免费的、中文的、机器学习初级课程。

2019独角兽企业重金招聘Python工程师标准>>> 机器学习(Machine Learning, ML)是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。它是人工智能的核心,是使计算机具有智能的根本途径,其应用遍及…

市面上常见arduino版本比较

http://arduino.cc/en/Main/Products 详细链接 如果是入门,那么首选UNO R3,方便又省心 如果不是特殊要求,不建议购买2560,因为贵啊 nano是块很好的控制器,买不买随你咯 非特殊场合使用不建…

HALCON示例程序autobahn高速公路车道识别程序剖析

HALCON示例程序autobahn高速公路车道识别程序剖析 小哥哥小姐姐觉得有用点个赞呗! 示例程序源码(加注释) *关闭halcon窗口的实时更新 dev_update_window (‘off’) *关闭halcon图形窗口 dev_close_window () *打开图形窗口 *dev_open_win…

CSS中的未定义行为,浏览器的差异(一)

今天看了张鑫旭大佬的新书的有感吧,记录一下。 Web标准未对一些场景做出明确规范,所以各大浏览器厂家只能根据自己的理解和喜好去实现,表现差异不是浏览器的bug,用计算机领域的术语描述为"未定义行为"。 比如一个例子&a…

Atmel megaAVR控制器 串行引导Bootloader

开始研究下Bootloader的代码结构 2015.1.9 粗略看了下,Bootloader主要做了下板卡的初始化 -----> 然后进入for( ; ; )死循环 -----> 循环刷新串口数据 -----> 根据数据做出不同应答 -----> 如果有写数据,则将数据存入buffer …

MapReduce入门2-流量监控

3、流量监控汇总(使用LongWritable实现) hdfs文件路径:/tmp/flow.txt 查看文件内容: 13770759991 50 100 25 400 13770759991 800 600 500 100 13770759992 400 300 250 1400 13770759992 800 1200 600 900字符串含义:…

【fiddler学习问题记录】——手机端证书下载页打不开、无法将此证书安装(已解决)

目录 1、手机端下载页打不开 解决方法1)电脑端——将网络设置成公用(亲测有效) 解决方法2)手机端将fiddler设置为信任应用,不被拦截 (未试) 2、无法将此证书安装 方法一:修改证书…

舵机的原理和控制

控制信号由接收机的通道进入信号调制芯片,获得直流偏置电压。它内部有一个基准电路,产生周期为20ms,宽度为1.5ms的基准信号,将获得的直流偏置电压与电位器的电压比较,获得电压差输出。最后,电压差的正负输出…

HDFS清理坏块

报错 Failed with exception java.io.IOException:org.apache.hadoop.hdfs.BlockMissingException: Could not obtain block: BP-1921057509-192.168.57.129-1517160177567:blk_1073741930_1106 file/user/hive/warehouse/db_hive.db/student/student.txt Time taken: 0.104 se…

如何在PowerDesigner将PDM导出生成WORD文档或者html文件

a) 使用PowerDesigner打开pdm文件 b) 点击Report Temlates 制作模板 点击PowerDesigner菜单栏“Report” -> “Report Templates” c) 选择模板数据项 完成步骤a),得到如下界面,左右2个区,Aavailable区…

【软件测试】——基础篇(软件测试技术体系、过程管理)

目录 软件测试技术体系 软件测试过程管理​编辑 接口测试用例设计 手机端测试流程​编辑 软件测试技术体系 软件测试过程管理 接口测试用例设计 手机端测试流程

小米出招黑科技,5S或成全球首款”Under glass“指纹识别手机

这一次,小米PK苹果,小米胜。 不得不说,最近的手机圈真是热闹,继三星Note 7爆炸、苹果iPhone 7发布一度成为新闻热点之后,小米又来暗戳戳地抢风头了。 最近小米即将发布的两款新旗舰消息扎堆,其中基本已经确…

sql中实现取得某字段中数字值

ALTER function [dbo].[GetNum](a nvarchar(4000)) returns nvarchar(4000) as begin while patindex(%[^0-9]%,a)>0 begin set astuff(a,patindex(%[^0-9]%,a),1,) end--select a --299 return a end 例如: 转载于:https://www.cnblogs.com/fish-ycq/p/6433562.ht…

C语言条件编译及编译预处理阶段

一、C语言由源代码生成的各阶段如下: C源程序->编译预处理->编译->优化程序->汇编程序->链接程序->可执行文件其中 编译预处理阶段,读取c源程序,对其中…

网上书店 买方数据库

买方表 属性 字段名 类型 键值 是否空 用户ID UserId char(5) 主键 用户名称 UserName nvarchar(50) 用户密码 UserPwd nvarchar(50) 用户真实姓名 UserRealName nvarchar(50) 用户地址 UserAddress nvarchar(100) …

Web开发模式(MVC设计模式)

1.MVC:(Model-View-Controller)操作流程 显示层View:主要负责接收Servlet传递的内容,并调用JavaBean把内容显示给用户。 控制层Controller:负责所有的用户请求参数,判断请求参数是否合法,根据请求方式调用JavaBean进行处理&#x…

Arduino IDE 配置文件

最近学习Arduino。 Arduino开源硬件和Arduino IDE是一个很容易上手的系统。 目前arduino已经支持很多种板类型,甚至已经支持了部分arm芯片。比如arduino ng、arduino uno、arduino mini、pro mini等。但是大多数情况,都是使用的atmega8/at…

vue封装axios接口

一、安装axios axios安装命令:cnpm install axios 二、在文件中引用axios 一开始我是放在src下的main.js这个文件里面,后来发现mounted钩子读取接口方法为undefined,百度了才发现是vue生命周期的原因,最好的解决办法是把axios单独…

编写Arduino支持的C++类库

以下为摘抄的例子,已经亲自验证过,例子是正确的 我们在上一讲中实现了一个TN901红外温度传感器51程序到Arduino程序的转换,如果代码越来越多这样程序的可维护性会随之降低,也不适合团度开发。我们应该把常用的文件封装成C库&#…

【机器学习实战】——常见函数积累

目录 第二章 k近邻算法 1、array.sum(axies 1) : 2、array.argsort(axies0/1) 3、array.tile(mat,(m,n)) 4、dict.get(key,value) 5、sorted函数 6、string.strip()函数 7、string.split() 8、scatter()函数 9、min()&max() 10、enumera…