python - 只读 SQL.. 周围有 DSL 吗?

标签 python sql django dsl

<分区>

我们想授予我们的一些用户从数据库中读取任何他们想要的内容的权限,所以我们很感兴趣 - 是否有任何 SQL 方言仅支持 SELECT、WHERE 和 JOIN 运算符?

我们想这样使用它:

class MyModelWithSQLRule(models.Model):
    sql_rule = models.TextField()

    def what_data_i_will_get(self): 
        """
        Here we must get exception with attempt of query like
        DELETE * FROM users_users; SELECT id FROM users_users; 
        """
        parsed_sql_rule = select_only_parser(self.sql_rule)
        return Users.objects.raw(parsed_sql_rule)

这与数据库引擎无关。我想要 语言,它属于 SQL 的子系列,但没有像 DELETE 这样的危险词。

最佳答案

根据您所说的,答案是否定的。

您可以为您的数据库设置 2 个连接字符串,其中 1 个在数据库级别设置为只读,另一个可以是读/写连接字符串,然后您只需要构建一个数据库 session 上下文适当的连接字符串。这在您的应用程序级别为您提供了一定程度的安全性,但最终仍然依赖于数据库,因为错误将从那里抛出。

关于python - 只读 SQL.. 周围有 DSL 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12725980/

相关文章:

python - 如何为两个相关模型组织迁移并自动为新建对象的 id 设置默认字段值?

python - 通过边界框从图像中提取选定的文本

python - 如何合并来自同一模型的两个查询集而不对其进行排序

php - 通过 SQL 检索带有特色图片的 wordpress 帖子

django - 将Django DateField格式化为ISO格式

python - 无法通过 `Model` 实例访问管理器

python - lambda函数及其参数的范围?

Python 分箱代码并取平均值

sql - 如何将列变成行

mysql - 如何返回给定月份的联接中的记录数?