我有一个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
也来自dbshell:
database => SELECT * FROM clickhouse_table LIMIT 1;
ERROR: permission denied for foreign table clickhouse_table
有什么建议吗?
答案 0 :(得分:0)
您的Django应用需要对数据库的完全访问权限。此外,Django还为您提供ORM。您可能会考虑使用它。
答案 1 :(得分:0)
我从头开始,现在可以正常工作。不知道发生了什么事:/