python字符串解析给定的sql查询,告诉它是读还是写

时间:2018-10-11 23:59:47

标签: python sql string parsing

我得到了一个SQL查询,我必须确定它是写语句还是读语句。

我不确定该怎么做,也找不到在线上已经有此功能的任何东西。

我假设唯一的方法是检查字符串中诸如selectupdate alter delete insert drop etc...之类的单词

但是我必须首先去除所有字符串文字。

def is_write_query(query):
    # returns true or false 
    # strip string literals 
    # if contains key words: 
    #   UPDATE, DELETE, INSERT, CREATE, ALTER, DROP
    # return true, else false

有人知道更好的方法吗?您知道具有此功能的软件包吗?

如果这是最好的方法,那么处理字符串解析的最简单方法是什么?专门剥离字符串文字。

1 个答案:

答案 0 :(得分:1)

我不知道有什么比您建议的更好的方法-您需要查看正在发生的操作。该操作将始终是查询中的第一个单词,因此您可以执行以下操作:

def is_write_query(query): 
    query = query.lower().strip() # to remove trailing and leading whitespace, convert to lowercase 
    if query.startswith(("update","insert","create","alter","delete","drop")): 
        return True 
    else:
        return False 

您可能需要包含比我在此处包含的关键字更多的关键字,但这是一般性的想法。 .startswith()可以使用字符串的元组(而不是列表)来尝试发生这种情况。