【发布时间】:2013-05-27 11:27:26
【问题描述】:
有什么方法可以在 Python 中执行 .sql 文件中的一些 SQL 命令,但不能执行文件中的所有 SQL 命令?假设我有以下.sql 文件:
DROP TABLE IF EXISTS `tableA`;
CREATE TABLE `tableA`(
some_code
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
DROP TABLE IF EXISTS `tableB`;
CREATE TABLE `tableB`(
some_code
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
DROP TABLE IF EXISTS `tableC`;
CREATE TABLE `tableC`(
some_code
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
...to be continued...
在这个文件中,我只想解析和运行与 tableB 相关的命令(即删除和创建 tableB),但不喜欢在 Python 中对其他表执行任何 SQL 命令。我对如何在 Python 中执行 .sql 文件有一些了解,但不知道如何只执行 .sql 文件中的某些特定命令,如上面示例中所述。让我印象深刻的第一件事是使用正则表达式。但经过一番争论后,由于我的正则表达式知识和经验不足,我无法想出正确的正则表达式语法来得到我所期望的。
所以我的问题是,
1)在这里使用正则表达式来获取所需的命令是否正确,如果是,你能告诉我正确的语法来解析它吗?
2)如果正则表达式不是这里最好的方法,还有什么替代解决方案?
3)我在网上找了一些正则表达式测试工具,但都是指定表达式和测试字符串,并突出显示字符串中匹配的数据。我相信如果有一些工具让我首先指定测试字符串,然后手动突出显示字符串中的所需数据,然后反向返回一些适当的语法/表达式,那将是很棒的。如果您知道此类工具(不限于在线工具!如果是 Macintosh 应用程序我也很高兴),请告诉我...
谢谢。
【问题讨论】:
-
1) 我想说除了正则表达式之外,您还有其他选择,但这并不意味着您不能使用它。 2)解析语句会更安全。 3)任何基于选择创建正则表达式的工具永远不会同时具有适当的准确和泛化水平。