Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Py Postgresql和Raritan PowerIQ-似乎找不到表?_Python_Postgresql - Fatal编程技术网

Python Py Postgresql和Raritan PowerIQ-似乎找不到表?

Python Py Postgresql和Raritan PowerIQ-似乎找不到表?,python,postgresql,Python,Postgresql,我正在尝试编写一些Python3,以便在Raritan Power IQ系统上与后端PostgreSQL服务器进行接口 我使用pgAdminIII连接到服务器,它与我的凭据连接良好。我可以看到数据库,以及每个数据库中的模式 我现在正在使用py-postgresql尝试编写脚本,我遇到了一些问题 我使用以下方法进行连接: postgresql.open("pq://odbcuser:password@XX.XX.XX.XX:5432/raritan") 要连接到raritan数据库,请使用用户o

我正在尝试编写一些Python3,以便在Raritan Power IQ系统上与后端PostgreSQL服务器进行接口

我使用pgAdminIII连接到服务器,它与我的凭据连接良好。我可以看到数据库,以及每个数据库中的模式

我现在正在使用py-postgresql尝试编写脚本,我遇到了一些问题

我使用以下方法进行连接:

postgresql.open("pq://odbcuser:password@XX.XX.XX.XX:5432/raritan")
要连接到raritan数据库,请使用用户odbcuser和密码不,这不是真实的…哈哈

它似乎连接成功。我能够运行一些查询,例如

ps = db.prepare("SELECT * from pg_tables;")
ps()
设法列出raritan数据库中的所有表/视图

然而,我尝试访问一个特定的视图,结果它中断了。raritan数据库有两种模式,odbc和public

我可以从公共模式访问视图。例如:

ps = db.prepare("SELECT * from public.qrypwrall;")
ps()
在某种程度上是有效的——我得到了一个权限被拒绝的错误,就像我在pgAdminIII下一样,因为我的帐户没有访问该视图的权限,但是从语法上讲,它看起来很好,并且确实找到了表

但是,当我尝试在odbc下访问视图时,它只是中断。例如:

>>> ps = db.prepare("SELECT * from odbc.Aisles;")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Python31\lib\site-packages\postgresql\driver\pq3.py", line 2291, in prepare
ps._fini()
  File "C:\Python31\lib\site-packages\postgresql\driver\pq3.py", line 1393, in _
fini
    self.database._pq_complete()
  File "C:\Python31\lib\site-packages\postgresql\driver\pq3.py", line 2538, in _
pq_complete
    self.typio.raise_error(x.error_message, cause = getattr(x, 'exception', None
))
  File "C:\Python31\lib\site-packages\postgresql\driver\pq3.py", line 471, in ra
ise_error
    self.raise_server_error(error_message, **kw)
  File "C:\Python31\lib\site-packages\postgresql\driver\pq3.py", line 462, in ra
ise_server_error
    raise server_error
postgresql.exceptions.UndefinedTableError: relation "odbc.aisles" does not exist

  CODE: 42P01
  LOCATION: File 'namespace.c', line 268, in RangeVarGetRelid from SERVER
STATEMENT: [parsing]
  statement_id: py:0x10ca1b0
  string: SELECT * from odbc.Aisles;
CONNECTION: [idle]
  client_address: 10.180.9.213/32
  client_port: 2612
  version:
    PostgreSQL 8.3.7 on i686-redhat-linux-gnu, compiled by GCC gcc (GCC) 4.1.2 2
0071124 (Red Hat 4.1.2-42)
CONNECTOR: [IP4] pq://odbcuser:***@10.180.138.121:5432/raritan
  category: None
DRIVER: postgresql.driver.pq3.Driver
也不起作用

干杯,
Victor

你试过这样做吗:“从公共过道中选择*


引用整个内容会使其成为一个非限定的无模式表名,表名中有一个点。

您是否尝试过这样做:“从public.Aisles中选择*?@Milen:Err,您知道,这确实有效?=。我简直不敢相信是这样的——当我在整个模式和表周围加上引号时,它就不起作用了。奇怪的你认为你可以重新发布你的回复作为答案,这样我就可以给你点建议了吗?根据你上面的评论,在两者之间使用引号,将查找一个名为public.Aisles的表-包括点和大写名称,不分为模式和表名。
cursor.execute('SELECT * from "public.Aisles"')