我得到了一个SQL查询,我必须确定它是写语句还是读语句。
我不确定该怎么做,也找不到在线上已经有此功能的任何东西。
我假设唯一的方法是检查字符串中诸如select
与update 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
有人知道更好的方法吗?您知道具有此功能的软件包吗?
如果这是最好的方法,那么处理字符串解析的最简单方法是什么?专门剥离字符串文字。
答案 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()
可以使用字符串的元组(而不是列表)来尝试发生这种情况。