是否有任何方法可以从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文件中仅执行上面示例中所述的一些特定命令。首先让我想到的是使用正则表达式。但是经过一点争论之后,由于我的regex知识和经验不足,我无法想出正确的regex语法来达到我的预期。
所以我的问题是
1)这里使用正则表达式只获取所需命令的方法正确吗?如果正确,您能告诉我解析它的正确语法吗?
2)如果正则表达式不是最好的方法,那么还有什么其他的解决方案?
3)我发现了一些在线regex测试工具,但它们都是指定表达式和测试字符串,并突出显示字符串中的匹配数据。我相信,如果有一些工具让我先指定测试字符串,然后在字符串中手动突出显示所需的数据,然后反向返回一些适当的语法/表达式,那就太好了。如果你知道这样的工具(没有限制在线工具!如果是Macintosh应用程序,我也很高兴),请告诉我。。。
谢谢。
虽然regex可能不是右侧的工具,但您仍然可以使用它。
如果你想知道
是,它只用于匹配除
;
以外的任何字符,任何次数,包括无或
字符串文本,这意味着它将允许
;
在类似'this is a ;value; for a varchar field'
的字符串内匹配。尽管我个人认为您应该使用一些解析库来解析SQL的AST,但是通过查看代码也可以使用此选项:
您可以尝试sqlparse库,它将通过解析SQL语句来简化您的工作,并使您能够查询和使用SQL语句中的标记。在您的例子中,它可以是一个goos基来过滤掉包含特定标记(如
tableB
)的语句相关问题 更多 >
编程相关推荐