python - SQL 和 Python 出错 - 表或视图不存在
问题描述
如果我left JOIN t2 ON Col10 = Col1
在 Python 的 sql 查询中添加为命令,我将无法运行脚本。没有它,我可以毫无问题地运行脚本。
我得到的错误是: SQL 错误:ORA-00942 表或视图不存在
PS-脚本完整脚本在 SQL 开发人员中运行良好。
任何建议为什么?
import cx_Oracle
import pandas as pd
conn = cx_Oracle.connect('......')
cur = conn.cursor()
sql = "SELECT \
Col1, \
Col2 \
FROM t1 \
left JOIN t2 ON Col10 = Col1"
cur.execute(sql)
sql_data = pd.DataFrame(cur.fetchall())
col_names = [row[0] for row in cur.description]
sql_data.columns = col_names
sql_data
解决方案
PS-完整的脚本在 SQL 开发人员中运行良好。
如果是这种情况,这意味着用户(您在 SQL Developer 中连接到的用户)可以同时访问t1
和t2
表。
如果甲骨文抱怨
ORA-00942 表或视图不存在
当您SELECT
从 Python 运行相同的语句时,这意味着您现在连接到的用户
conn = cx_Oracle.connect('......')
没有访问t2
表的权限。那可能是因为
- 你拼错了它的名字
- 有人删除了表,所以它在该模式中不再存在
- 它由其他人拥有,但您正在访问它,因为所有者授予您这样做的权限(并且这些权限现在已被撤销)
- 您将其用作已删除的公共同义词
或其他一些原因。很难调试您发布的“通用”代码,因为很明显,表不是真正的,列t1
也不是,等等。因此,重新阅读我刚才所说的内容并尝试找出罪魁祸首。祝你好运!t2
col1
col2