任务是确定SQL语句是否为DML / DDL。
所以我不得不使用一个数组,将所有DML/DDL模式放入其中,然后通过迭代来搜索它们。
下面是一个简单的代码片段,其中
1.我将SQL查询作为参数发送
1.检查它是否具有更新、更改、删除、删除
1.打印
def check_dml_statementent (self,sql)
actions = ['update', 'alter', 'drop', 'delete']
for action in actions
if ( re.search (action,sql.lower() ) :
print "This is a dml statement "
但也有一些边缘情况,我需要为
- 考虑
Update table table_name where ...
alter table table_name
create table table_name
delete * from table_name
drop table_name
- 不考虑:
select * from table where action='drop'
因此,任务是只识别修改、删除、创建、更改表等的SQL语句。
一个具体的想法是使用startswith
函数检查SQL语句是否以上述数组值开始。
1条答案
按热度按时间5ssjco0h1#
您可以使用python-sqlparse来实现这一点:
这将输出: