Skip to content
This repository has been archived by the owner on May 17, 2024. It is now read-only.

Refactor common database interface into Sqeleton (databases, queries) #285

Merged
merged 17 commits into from
Nov 15, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions data_diff/__init__.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
from typing import Sequence, Tuple, Iterator, Optional, Union

from .tracking import disable_tracking
from .databases.connect import connect
from .databases.database_types import DbKey, DbTime, DbPath
from .databases import connect
from .sqeleton.databases import DbKey, DbTime, DbPath
from .diff_tables import Algorithm
from .hashdiff_tables import HashDiffer, DEFAULT_BISECTION_THRESHOLD, DEFAULT_BISECTION_FACTOR
from .joindiff_tables import JoinDiffer
Expand Down
4 changes: 2 additions & 2 deletions data_diff/__main__.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@
from .hashdiff_tables import HashDiffer, DEFAULT_BISECTION_THRESHOLD, DEFAULT_BISECTION_FACTOR
from .joindiff_tables import TABLE_WRITE_LIMIT, JoinDiffer
from .table_segment import TableSegment
from .databases.database_types import create_schema
from .databases.connect import connect
from .sqeleton.databases import create_schema
from .databases import connect
from .parse_time import parse_time_before_now, UNITS_STR, ParseError
from .config import apply_config_from_file
from .tracking import disable_tracking
Expand Down
4 changes: 2 additions & 2 deletions data_diff/databases/__init__.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from .base import MD5_HEXDIGITS, CHECKSUM_HEXDIGITS, QueryError, ConnectError
from data_diff.sqeleton.databases import MD5_HEXDIGITS, CHECKSUM_HEXDIGITS, QueryError, ConnectError

from .postgresql import PostgreSQL
from .mysql import MySQL
Expand All @@ -13,4 +13,4 @@
from .vertica import Vertica
from .duckdb import DuckDB

from .connect import connect_to_uri
from ._connect import connect
42 changes: 42 additions & 0 deletions data_diff/databases/_connect.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
from data_diff.sqeleton.databases.connect import MatchUriPath, Connect

from .postgresql import PostgreSQL
from .mysql import MySQL
from .oracle import Oracle
from .snowflake import Snowflake
from .bigquery import BigQuery
from .redshift import Redshift
from .presto import Presto
from .databricks import Databricks
from .trino import Trino
from .clickhouse import Clickhouse
from .vertica import Vertica
from .duckdb import DuckDB


MATCH_URI_PATH = {
"postgresql": MatchUriPath(PostgreSQL, ["database?"], help_str="postgresql://<user>:<pass>@<host>/<database>"),
"mysql": MatchUriPath(MySQL, ["database?"], help_str="mysql://<user>:<pass>@<host>/<database>"),
"oracle": MatchUriPath(Oracle, ["database?"], help_str="oracle://<user>:<pass>@<host>/<database>"),
# "mssql": MatchUriPath(MsSQL, ["database?"], help_str="mssql://<user>:<pass>@<host>/<database>"),
"redshift": MatchUriPath(Redshift, ["database?"], help_str="redshift://<user>:<pass>@<host>/<database>"),
"snowflake": MatchUriPath(
Snowflake,
["database", "schema"],
["warehouse"],
help_str="snowflake://<user>:<pass>@<account>/<database>/<SCHEMA>?warehouse=<WAREHOUSE>",
),
"presto": MatchUriPath(Presto, ["catalog", "schema"], help_str="presto://<user>@<host>/<catalog>/<schema>"),
"bigquery": MatchUriPath(BigQuery, ["dataset"], help_str="bigquery://<project>/<dataset>"),
"databricks": MatchUriPath(
Databricks,
["catalog", "schema"],
help_str="databricks://:<access_token>@<server_name>/<http_path>",
),
"trino": MatchUriPath(Trino, ["catalog", "schema"], help_str="trino://<user>@<host>/<catalog>/<schema>"),
"clickhouse": MatchUriPath(Clickhouse, ["database?"], help_str="clickhouse://<user>:<pass>@<host>/<database>"),
"vertica": MatchUriPath(Vertica, ["database?"], help_str="vertica://<user>:<pass>@<host>/<database>"),
"duckdb": MatchUriPath(DuckDB, ["database", "dbpath"], help_str="duckdb://<database>@<dbpath>"),
}

connect = Connect(MATCH_URI_PATH)
Loading