Tôi sẽ tạo một thủ tục được lưu trữ:
DROP PROCEDURE IF EXISTS CopyTable;
DELIMITER $$
CREATE PROCEDURE CopyTable(IN _mytable VARCHAR(64), _table_name VARCHAR(64))
BEGIN
SET FOREIGN_KEY_CHECKS=0;
SET @stmt = CONCAT('DROP TABLE IF EXISTS ',_table_name);
PREPARE stmt1 FROM @stmt;
EXECUTE stmt1;
SET FOREIGN_KEY_CHECKS=1;
SET @stmt = CONCAT('CREATE TABLE ',_table_name,' as select * from ', _mytable);
PREPARE stmt1 FROM @stmt;
EXECUTE stmt1;
DEALLOCATE PREPARE stmt1;
END$$
DELIMITER ;
và sau đó chỉ cần chạy:
args = ['mytable', 'table_name']
cursor.callproc('CopyTable', args)
giữ cho nó đơn giản và mô-đun. Tất nhiên, bạn nên thực hiện một số loại kiểm tra lỗi và thậm chí bạn có thể yêu cầu thủ tục cửa hàng trả lại mã để cho biết thành công hay thất bại.