热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

数据库技术:Python实现mysql数据库中的SQL文件生成和导入分享

目录1、将mysql数据导出到SQL文件中(数据库存在的情况)2、将现有的sql文件数据导入到数据库中(前提数据库存在) 3、利用Navicat导出SQL文件和导入SQL文件1)从

目录

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

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

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

1)从数据库导出SQL文件

2)导入SQL文件到数据库 

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

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

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

Python实现mysql数据库中的SQL文件生成和导入

#!/usr/bin/env python # -*- coding: utf-8 -*- # @description:导出数据库文件sql import os class 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 result if __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 Path class 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 = host         self._port: int = port         self._user: str = user         self._password: str = password         self._database: str = database         self._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 result         else:             return True     def _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全部语句执行成功 !"     @property     def sql_run(self):         """         执行方法         :return:         """         return self._export_databases_data() if __name__ == '__main__':     res = ConnectMsql().sql_run     print(res)

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

Python实现mysql数据库中的SQL文件生成和导入

3、利用Navicat导出SQL文件和导入SQL文件 1)从数据库导出SQL文件

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

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

2)导入SQL文件到数据库 

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

Python实现mysql数据库中的SQL文件生成和导入

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

Python实现mysql数据库中的SQL文件生成和导入

到此这篇关于Python实现mysql数据库中的SQL文件生成和导入的文章就介绍到这了,更多相关SQL文件生成内容请搜索<编程笔记>以前的文章或继续浏览下面的相关文章希望大家以后多多支持<编程笔记>!

上述就是数据库技术:Python实现mysql数据库中的SQL文件生成和导入分享的全部内容,如果对大家有所用处且需要了解更多关于mysql数据库学习教程,希望大家多多关注—编程笔记


推荐阅读
  • 本文介绍了使用kotlin实现动画效果的方法,包括上下移动、放大缩小、旋转等功能。通过代码示例演示了如何使用ObjectAnimator和AnimatorSet来实现动画效果,并提供了实现抖动效果的代码。同时还介绍了如何使用translationY和translationX来实现上下和左右移动的效果。最后还提供了一个anim_small.xml文件的代码示例,可以用来实现放大缩小的效果。 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 本文详细介绍了MysqlDump和mysqldump进行全库备份的相关知识,包括备份命令的使用方法、my.cnf配置文件的设置、binlog日志的位置指定、增量恢复的方式以及适用于innodb引擎和myisam引擎的备份方法。对于需要进行数据库备份的用户来说,本文提供了一些有价值的参考内容。 ... [详细]
  • 本文介绍了使用PHP实现断点续传乱序合并文件的方法和源码。由于网络原因,文件需要分割成多个部分发送,因此无法按顺序接收。文章中提供了merge2.php的源码,通过使用shuffle函数打乱文件读取顺序,实现了乱序合并文件的功能。同时,还介绍了filesize、glob、unlink、fopen等相关函数的使用。阅读本文可以了解如何使用PHP实现断点续传乱序合并文件的具体步骤。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
author-avatar
U友48805799
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有