繁体   English   中英

Django模型对Postgres外部表(clickhouse_fdw)的引用

[英]Django model reference to a postgres foreign table (clickhouse_fdw)

我有一个Django项目。 我已使用clickhouse_fdw将Clickhouse表与Postgres表连接。 按照clickhouse_fdw的说明,在postgres中,我这样做了:

CREATE EXTENSION clickhousedb_fdw;
CREATE SERVER clickhouse_svr FOREIGN DATA WRAPPER clickhousedb_fdw OPTIONS(host 'host', dbname 'dbname', driver '/var/lib/postgresql/libclickhouseodbc.so');
CREATE USER MAPPING FOR CURRENT_USER SERVER clickhouse_svr;
CREATE FOREIGN TABLE clickhouse_table ("date_from" Date, "date_to" Date ... ) server clickhouse_svr options(table_name 'table');

使用psql命令可以正常工作,但是现在我想从Django访问(我可以访问所有其他表而没有任何问题)。 我为Clickhouse表添加了新模型,并在Django中忽略了对其的迁移和管理。

然后在django shell中我尝试了:

ClickHouseTable.objects.all()
ClickHouseTable.objects.raw('SELECT * FROM clickhouse_table LIMIT 1')[0]
from django.db import connection
with connection.cursor() as cursor:
    cursor.execute('SELECT * FROM clickhouse_table LIMIT 1')
    row = cursor.fetchone()

并与每个查询我得到:

ProgrammingError: permission denied for foreign table clickhouse_table

同样从dbshel​​l:

database => SELECT * FROM clickhouse_table LIMIT 1;
ERROR:  permission denied for foreign table clickhouse_table

有什么建议么?

您的Django应用需要对数据库的完全访问权限。 此外,Django还为您提供ORM。 您可能会考虑使用它。

我从头开始,现在可以使用了。 不知道发生了什么事:/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM