试图构建一个python脚本来更新oracle中的表。角色已被授予所有权限,并且角色已被授予用于执行CRUD操作的模式。
使用cx_oracle执行数据库事务时,SELECT、UPDATE和DELETE工作正常。
sql = "INSERT INTO the_schema.the_table (col_1, col_2) VALUES ('val1', 'val2')"
cur.execute(sql)
表或视图不存在
但是在SQL Developer中插入工作得很好。什么好主意吗?插入时,cx_oracle有什么奇怪的地方吗?
结果是用户错误。在SQL Developer中,用户以模式所有者的身份登录,并且对序列的pk有权限。在python中,用户以用户模式的身份登录,并且对序列没有权限。
通过将对所有者模式序列的select授权给用户模式来解决问题。
谢谢大家的帮助!