【发布时间】:2020-10-16 11:01:12
【问题描述】:
在 python 中运行类似以下内容的建议方法是什么:
self.cursor.execute('SET FOREIGN_KEY_CHECKS=0; DROP TABLE IF EXISTS %s; SET FOREIGN_KEY_CHECKS=1' % (table_name,))
例如,这应该是三个独立的self.cursor.execute(...) 语句吗?除了cursor.execute(...) 之外,还有什么特定的方法可以用来做这样的事情,或者建议的做法是什么?目前我的代码如下:
self.cursor.execute('SET FOREIGN_KEY_CHECKS=0;')
self.cursor.execute('DROP TABLE IF EXISTS %s;' % (table_name,))
self.cursor.execute('SET FOREIGN_KEY_CHECKS=1;')
self.cursor.execute('CREATE TABLE %s select * from mytable;' % (table_name,))
如您所见,一切都是单独运行的......所以我不确定这是否是一个好主意(或者更确切地说 - 执行上述操作的最佳方法是什么)。或许BEGIN...END?
【问题讨论】:
-
告诉我们大局是什么。您列出的内容很不正常;可能有更好的方法来解决“真正的”问题。
-
另外,如果这是一次性任务,只需在命令行 mysql 中执行即可,不必担心 python 的限制。
-
@RickJames 是的,同意。这是一个日常脚本,用于备份表以进行审计(我们将它们保留十天)。将其放入 DW 或其他任何东西都不够重要,但我们会保留它以用于一些临时查询,以便跟踪跟踪一周的数据,如果需要用于审计目的。
-
您使用
DROP TABLE ... CREATE TABLE超过TRUNCATE TABLE的任何特殊原因?
标签: python mysql mysql-python