Python(falcon)转换是只读的



当我试图从python应用程序的红移数据库读取数据时,遇到了一个奇怪的错误-psycopg2.errors.ReadOnlySqlTransaction: transaction is read-only。我没有试图修改数据库,所以我不确定为什么会发生这种情况。我使用的是postgresql插件(psycopg2(2.8.4版本。还有python 3.5版——我有很多其他查询都是用同样的方法运行的,它们运行起来没有问题,所以我有点困惑是什么原因导致了这种情况。

这是我正在运行的查询

SELECT
stat_date,
age,
name,
SUM(spent) as spent,
FROM (
SELECT stat_date, age,name, spent
FROM mview_a
WHERE id in ('id1', 'id2')
UNION ALL
SELECT stat_date, age,name, spent
FROM mview_b
WHERE id in ('id1', 'id2')
UNION ALL
SELECT stat_date, age,name, spent
FROM mview_c
WHERE id in ('id1', 'id2')
UNION ALL
SELECT stat_date, age,name, spent
FROM view_d (combination of multiple mviews)
WHERE id in ('id1', 'id2')
UNION ALL
SELECT stat_date, age,name, spent
FROM mview_e
WHERE id in ('id1', 'id2')
)
GROUP BY 1;

这就是我将查询与params 一起传递的方式

dw = self.get_conn(conn)
results = dw.fetch_all_query(query, params=params, **kwargs)

并且数据库调用在psycopg2包的这一行失败。

self.execute_query(q, dict_cursor=dict_cursor, params=params,
readonly=readonly, autocommit=autocommit, conn=False)

在我的案例中,问题的发生是因为我使用的mviews之一是两个不同mviews的组合(并集所有(,并且由于某种原因,psql抛出了一个错误,称事务是只读的。错误消息对于解决此问题非常不清楚。

相关内容

  • 没有找到相关文章

最新更新