当前正在使用Python中的cx_Oracle模块连接到我的Oracle数据库。我想只允许程序的用户执行只读操作,比如选择,而不是插入/删除查询。
建立连接后,是否可以对连接/游标变量执行某些操作以防止可写查询?
我使用的是Python语言。
感谢任何人的帮助。
谢谢。
发布于 2018-09-20 21:57:11
一种可能是发出"set transaction read only“语句,如以下代码所示:
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()调用之后调用该语句。而且仍然可以通过调用执行commit或rollback的PL/SQL块来绕过它。
我现在唯一能想到的另一种可能性是创建一个没有插入、更新、删除等功能的受限用户或角色,并确保应用程序使用该用户或角色。这至少是一个愚蠢的证明,但在前面要付出更多的努力!
https://stackoverflow.com/questions/52416824
复制