【问题标题】:Preventing writable modifications to Oracle database, using Python.使用 Python 防止对 Oracle 数据库的可写修改。
【发布时间】:2018-09-20 02:46:09
【问题描述】:

目前在 Python 中使用 cx_Oracle 模块连接到我的 Oracle 数据库。我只想允许程序的用户进行只读执行,例如 Select 和 NOT INSERT/DELETE 查询。

一旦我建立连接以防止可写查询,我可以对连接/光标变量做些什么吗?

我正在使用 Python 语言。

感谢任何帮助。

谢谢。

【问题讨论】:

  • 你应该限制数据库服务器中的用户。

标签: python database readonly cx-oracle


【解决方案1】:

一种可能性是发出“设置事务只读”语句,如下代码所示:

import cx_Oracle

conn = cx_Oracle.connect("cx_Oracle/welcome")
cursor = conn.cursor()
cursor.execute("set transaction read only")
cursor.execute("insert into c values (1, 'test')")

这将导致以下错误:

ORA-01456: 不能在只读事务中执行插入/删除/更新操作

当然,您必须确保创建一个 Connection 类,该类在首次创建该语句时以及在每次 commit() 和 rollback() 调用之后调用该语句。而且它仍然可以通过调用执行提交或回滚的 PL/SQL 块来规避。

我现在唯一能想到的另一种可能性是创建一个受限制的用户或角色,它根本无法插入、更新、删除等,并确保应用程序使用该用户或角色。这个至少是万无一失的,但要付出更多的努力!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-28
    • 1970-01-01
    相关资源
    最近更新 更多