3

我有一个 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

有什么建议么?

4

2 回答 2

0

您的 Django 应用程序需要完全访问数据库。此外,Django 为您提供 ORM。你可以考虑使用它。

于 2019-07-12T19:42:18.313 回答
0

我从头开始,现在它正在工作。不知道发生了什么:/

于 2019-07-15T19:18:53.417 回答