【发布时间】:2020-01-13 20:07:15
【问题描述】:
我正在使用pyodbc 连接到机器数据库,并使用
pandas.read_sql(tbl,cnxn), where tbl = "SELECT * FROM TABLE", cnxn is pyodbc.connect('DSN=DATASOURCE;UID=USERID;PWD=PASSWORD').
它适用于大多数表,但有些表会返回:
DatabaseError: sql 'SELECT * FROM TABLE' 执行失败: ('42S02', '[42S02] [Microsoft][ODBC driver for Oracle][Oracle]ORA-00942: 表或视图不存在 (942) (SQLExecDirectW)')
这些在 MS Access 中打开时返回错误的表在设计视图中打开时有多个列,左侧带有一个键图标(因此是一个 复合 主键,由多个列组成)。
这是我遇到上述错误的原因吗?我该如何解决这个问题?
编辑:如此屏幕截图所示,在设计视图中有多个列标记为构成主键:
Edit2:感谢您的反馈。查看ODBC数据源管理器窗口,该数据源为32位平台,驱动为Microsoft ODBC for Oracle。
我认为表的名称不是问题,因为其他表也可以工作并且它们具有相同的命名约定(表名采用这种格式NAME_OF_THE_TABLE)。因为在公司项目上工作,所以尽量避免显示表名。
我研究了主键的概念,发现一个表只能有一个,但如附图所示,左侧有五个字段显示一个键图标。
【问题讨论】:
-
您的错误与主键无关。
-
对不起,我正在编辑这个
-
根据定义,您不能在表上有多个主键 - 始终只有最多一个主键 -但它可以由多个列组成(然后称为复合主键)
-
请显示引发该错误的表的名称。我有一个工作理论。此外,这些 Oracle 链接表是否在 MS Access 中?专门标记您的数据库。
-
是的,我认为它使用的是 Oracle。我不确定这些 Oracle 是否链接到 MS Access 中的表,但我对此表示怀疑。仍然我的理论是,具有多个字段且附有关键图标的表存在一些不同。
标签: sql database pandas pyodbc