Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于迭代mysql表和更改表空间的Python脚本_Python_Mysql - Fatal编程技术网

用于迭代mysql表和更改表空间的Python脚本

用于迭代mysql表和更改表空间的Python脚本,python,mysql,Python,Mysql,我正在恢复mysql数据库。我试图循环遍历mysql表并丢弃每个表的表空间,以便用旧的.ibd文件替换它。要使用什么样的Python代码来完成此任务 altertablediscard表空间 对于数据库中使用Python脚本的每个表?我正在使用Python3和mysql 8.0 谢谢 ~brohjoe连接数据库首先需要一个名为连接器的东西,在您的案例中,您需要一个用于python语言和MySQL版本8.0的连接器在这个案例中,您需要从这里下载连接器: 对于安装连接器: 当您安装了它之后,您可以通

我正在恢复mysql数据库。我试图循环遍历mysql表并丢弃每个表的表空间,以便用旧的.ibd文件替换它。要使用什么样的Python代码来完成此任务

altertablediscard表空间

对于数据库中使用Python脚本的每个表?我正在使用Python3和mysql 8.0

谢谢


~brohjoe

连接数据库首先需要一个名为连接器的东西,在您的案例中,您需要一个用于python语言和MySQL版本8.0的连接器在这个案例中,您需要从这里下载连接器

对于安装连接器:


当您安装了它之后,您可以通过以下文档参考开始连接到数据库和其他东西:

discard tablespace做什么?它与drop table相同吗?Discard tablespace从表中删除现有的.ibd文件(其中包含实际的mysql数据)。它不会删除表结构(即.frm文件)。我认为MySQL 8不再同时使用.frm和.ibd文件。谢谢Deon。脚本如何循环遍历每个表,并为数据库中的每个表执行ALTER table DISCARD TABLESPACE?如果您知道MySQL,这没有问题,使用
.execute(“命令”)
函数,您可以运行MySQL命令!关于
放弃表空间
的一个可能的解决方案是:感谢您的帮助。我读了这个链接,就像网站上最后一个人说的那样,简单地移动.ibd文件并不能在所有情况下都起作用。我仍然需要进行sql调用以丢弃表空间,然后导入旧的.ibd文件。不管怎样,我在编写代码,我有一种方法正在尝试实现,但问题是使用一个游标的结果。第二个游标需要执行execute.execute,当执行第二个游标时,代码就会消失。(我将发布一个新的SO问题)。