【发布时间】:2020-10-15 20:54:25
【问题描述】:
通过 python 应用程序从表中获取数据会引发以下错误: cx_Oracle.DatabaseError: ORA-00942: 表或视图不存在。我已经验证了架构和表名。
cur = cursor.execute('SELECT * FROM SYS.STUDENT_RECORDS')
但是,应用程序从系统表中获取数据。
cur = cursor.execute("SELECT * FROM TAB_STATS$ WHERE ROWNUM <= 10")
这是连接字符串:
dsn_tns = cx_Oracle.makedsn(ip, port, SID)
connection = cx_Oracle.connect(user='username', password='****',dsn=dsn_tns)
我假设它必须在用户许可的情况下做某事,但并不完全正确。我对 Oracle DB 没有太多经验。任何帮助将不胜感激。
【问题讨论】:
-
首先,为什么在 sys 模式中会有像 student_records 这样的用户表?要回答您的问题,如果您有 DBA 权限,您可以给予资助。最好让您的 DBA 为您的 python 脚本登录到数据库的模式用户授予对数据字典的访问权限。
-
FROM SYS.STUDENT永远不要在SYS或SYSTEM架构/用户下创建表,除非您要销毁数据库。创建一个新的普通用户(模式),然后将所有表放入此模式中。 -
我按照上述说明测试了与 SQL 开发人员的这个新用户的连接...但是从 python 脚本,我无法登录:cx_Oracle.DatabaseError: ORA-01017: invalid username /密码;登录被拒绝