Мы используем psycopg2 jsonb-курсор для извлечения данных и обработки, но при появлении нового потока или обработки он не должен извлекать и обрабатывать те же записи, что первый процесс или поток.
Для этого мы должны попытатьсяиспользуйте FOR UPDATE, но мы просто хотим знать, используем ли мы правильный синтаксис.
con = self.dbPool.getconn()
cur = conn.cursor()
sql="""SELECT jsondoc FROM %s WHERE jsondoc @> %s"”"
if 'sql' in queryFilter:
sql += queryFilter 'sql’]
When we print this query, it will be shown as below:
Query: "SELECT jsondoc FROM %s WHERE jsondoc @> %s AND (jsondoc ->> ‘claimDate')::float <= 1536613219.0 AND ( jsondoc ->> ‘claimstatus' = ‘done' OR jsondoc ->> 'claimstatus' = 'failed' ) limit 2 FOR UPDATE"
cur.execute(sql, (AsIs(self.tablename), Json(queryFilter),))
cur.execute()
dbResult = cur.fetchall()
Пожалуйста, помогите нам уточнить синтаксис и объяснить, если этот синтаксис правильный, тогда как этот запрос блокирует извлеченные записипервой нити.
Спасибо, Санджай.