Changeset View
Changeset View
Standalone View
Standalone View
swh/provenance/postgresql/provenancedb_base.py
from datetime import datetime | from datetime import datetime | ||||
import itertools | import itertools | ||||
import logging | import logging | ||||
from typing import Dict, Generator, Iterable, Optional, Set, Tuple | from typing import Dict, Generator, Iterable, Optional, Set, Tuple | ||||
import psycopg2 | import psycopg2 | ||||
import psycopg2.extras | import psycopg2.extras | ||||
from typing_extensions import Literal | from typing_extensions import Literal | ||||
from swh.core.db import BaseDb | |||||
from swh.model.model import Sha1Git | from swh.model.model import Sha1Git | ||||
from ..provenance import ProvenanceResult, RelationType | from ..provenance import ProvenanceResult, RelationType | ||||
class ProvenanceDBBase: | class ProvenanceDBBase: | ||||
raise_on_commit: bool = False | raise_on_commit: bool = False | ||||
def __init__(self, conn: psycopg2.extensions.connection): | def __init__(self, conn: psycopg2.extensions.connection): | ||||
BaseDb.adapt_conn(conn) | |||||
conn.set_isolation_level(psycopg2.extensions.ISOLATION_LEVEL_AUTOCOMMIT) | conn.set_isolation_level(psycopg2.extensions.ISOLATION_LEVEL_AUTOCOMMIT) | ||||
conn.set_session(autocommit=True) | conn.set_session(autocommit=True) | ||||
self.conn = conn | self.conn = conn | ||||
self.cursor = self.conn.cursor(cursor_factory=psycopg2.extras.RealDictCursor) | self.cursor = self.conn.cursor(cursor_factory=psycopg2.extras.RealDictCursor) | ||||
# XXX: not sure this is the best place to do it! | # XXX: not sure this is the best place to do it! | ||||
sql = "SET timezone TO 'UTC'" | sql = "SET timezone TO 'UTC'" | ||||
self.cursor.execute(sql) | self.cursor.execute(sql) | ||||
self._flavor: Optional[str] = None | self._flavor: Optional[str] = None | ||||
▲ Show 20 Lines • Show All 257 Lines • Show Last 20 Lines |