使用python识别sql语句

l7wslrjt  于 2023-01-11  发布在  Python
关注(0)|答案(1)|浏览(222)

任务是确定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语句是否以上述数组值开始。

5ssjco0h

5ssjco0h1#

您可以使用python-sqlparse来实现这一点:

import sqlparse

query = """
select * from table where action='delete';
delete from table where name='Alex'
"""

parsed = sqlparse.parse(query)
for p in parsed:
    print(p.get_type())

这将输出:

SELECT
DELETE

相关问题