我正在构建一个小界面,希望用户能够写出他们的 整个 sql语句,然后查看返回的数据。但是,我不希望用户能够做任何有趣的事情,即delete fromuser_table;。实际上,我希望用户能够做的唯一一件事就是运行select语句。我知道没有特定的SQLite用户,所以我在考虑要制定的一套规则来拒绝某些查询。也许是正则表达式字符串之类的东西(正则表达式使我有些害怕)。关于如何做到这一点的任何想法?
delete fromuser_table;
select
def input_is_safe(input): input = input.lower() if "select" not in input: return False #more stuff return True
我可以为您的问题建议另一种方法。您可以将对数据库的访问权限限制为只读。这样,即使用户尝试执行删除/更新查询,他们也将无法破坏您的数据。
这是Python如何打开只读连接的答案:
db = sqlite3.connect('file:/path/to/database?mode=ro', uri=True)