在python中执行sql查询语句之前如何检查语法?



正如标题所说,我想在Python中执行查询之前检查查询的语法。例如,一个名为check_syntax:

的函数
correct_sql = "select * from table;"
wrong_sql = "selecccct * from table;"
check_syntax(correct_sql) # return True 
check_syntax(wrong_sql)   # return False

我想知道,在Python中有什么库可以帮助吗?我已经查了sqlparse,但是没有帮助。

这可能不太理想,但您可以这样做:

def check_syntax(request: str) -> bool:
try:
cursor.execute(request)
return True
except:
return False

问题是您不会"只检查"。语法。你可以做同样的,但解析错误消息e(except Exception as e),只返回False,如果错误代码是102:IncorrectSyntax。

这里有一些东西可以帮助解析pyodbc的异常消息,但取决于您使用的库,您必须更改类。

pyparsing在其示例目录中包含SELECT语句解析器。你可以这样使用:

from pyparsing import Optional, ParseException
from select_parser import select_stmt
def check_syntax(s):
try:
(select_stmt + Optional(';')).parseString(s, parseAll=True)
except ParseException as pe:
print(pe.explain())
return False
else:
return True
correct_sql = "select * from table;"
wrong_sql = "selecccct * from table;"
print(check_syntax(correct_sql))  # return True
print(check_syntax(wrong_sql))  # return False

相关内容

  • 没有找到相关文章

最新更新