Skip to content

Commit 6c58064

Browse files
committed
Update version
1 parent af08e57 commit 6c58064

File tree

10 files changed

+65
-71
lines changed

10 files changed

+65
-71
lines changed

qrlew_datasets/databases/mariadb.py

+9-9
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ def __init__(self, name=NAME, user=USER, password=PASSWORD, port=PORT) -> None:
1818
self.port = port
1919
self.engine()
2020

21-
def try_get_existing(self) -> Optional[Engine]:
21+
def existing_engine(self) -> Optional[Engine]:
2222
"""Try to connect to mariadb"""
2323
if subprocess.run(['docker', 'exec', self.name, 'mariadb-admin',
2424
f'--password={self.password}',
@@ -34,7 +34,7 @@ def try_get_existing(self) -> Optional[Engine]:
3434
else:
3535
return None
3636

37-
def try_get_container(self) -> Optional[Engine]:
37+
def container_engine(self) -> Optional[Engine]:
3838
"""Try to start or run a mariadb container"""
3939
# Try to start an existing container
4040
if subprocess.run(['docker', 'start', self.name]).returncode != 0:
@@ -57,25 +57,25 @@ def try_get_container(self) -> Optional[Engine]:
5757
print("Waiting mariadb to be ready...")
5858
sleep(1)
5959
attempts += 1
60-
return self.try_get_existing()
60+
return self.existing_engine()
6161

6262
# Implements engine
6363
def engine(self) -> Engine:
6464
"""Create a mariadb engine"""
65-
engine = self.try_get_existing()
65+
engine = self.existing_engine()
6666
if engine is None:
67-
engine = self.try_get_container()
67+
engine = self.container_engine()
6868
assert(engine is not None)
6969
return engine
7070

71-
# Dump psql files
71+
# Dump mariadb files
7272
def dump(self, path: str) -> None:
73-
"""Dump psql"""
73+
"""Dump mariadb"""
7474
self._dump('localhost', self.user, self.password, self.schema(), path)
7575

76-
# Dump psql files
76+
# Dump mariadb files
7777
def _dump(self, host: str, user: str, password: str, db: str, path: str) -> None:
78-
"""Dump psql"""
78+
"""mariadb-dump"""
7979
subprocess.run(['docker', 'exec', self.name, 'mariadb-dump',
8080
f'--host={host}',
8181
f'--user={user}',
File renamed without changes.

qrlew_datasets/sources.py

+55
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
import subprocess
2+
from sqlalchemy import create_engine
3+
from sqlalchemy.engine import Engine
4+
from qrlew_datasets.database import Database
5+
from qrlew_datasets.network import Network
6+
7+
class RelationalDatasetRepository(Database):
8+
'''Sources from relational.fit.cvut.cz'''
9+
def __init__(self, name: str) -> None:
10+
super().__init__()
11+
self._schema = name
12+
13+
def engine(self) -> Engine:
14+
return create_engine(f'mysql+pymysql://guest:[email protected]:3306/{self.schema()}')
15+
16+
def url(self) -> str:
17+
return f'mysql://guest:[email protected]:3306/{self.schema()}'
18+
19+
def schema(self) -> str:
20+
return self._schema
21+
22+
class Financial(RelationalDatasetRepository):
23+
def __init__(self) -> None:
24+
super().__init__('financial')
25+
26+
class Hepatitis(RelationalDatasetRepository):
27+
def __init__(self) -> None:
28+
super().__init__('Hepatitis_std')
29+
30+
class IMDB(RelationalDatasetRepository):
31+
def __init__(self) -> None:
32+
super().__init__('imdb_ijs')
33+
34+
NAME: str = "qrlew-pgloader"
35+
36+
class Loader:
37+
'''Load different sources to destination'''
38+
def __init__(self, destination: Database) -> None:
39+
self.destination = destination
40+
self.net = Network().name
41+
42+
def load(self, source: Database) -> bool:
43+
"""Try to run pgloader to load a DB into the target DB"""
44+
# Try to start an existing container
45+
subprocess.run([
46+
'docker',
47+
'run',
48+
'--rm',
49+
'-it',
50+
'--net', self.net,
51+
'dimitri/pgloader:latest',
52+
'pgloader',
53+
source.url(),
54+
self.destination.url()])
55+
return True

qrlew_datasets/sources/__init__.py

-4
This file was deleted.

qrlew_datasets/sources/financial/__init__.py

-5
This file was deleted.

qrlew_datasets/sources/hepatitis/__init__.py

-5
This file was deleted.

qrlew_datasets/sources/imdb/__init__.py

-5
This file was deleted.

qrlew_datasets/sources/loader.py

-25
This file was deleted.

qrlew_datasets/sources/relational_dataset_repository.py

-17
This file was deleted.

tests/test_sql_sources.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import os.path
22
import importlib.resources as pkg_resources
3-
from qrlew_datasets.file import SQL, CSV
3+
from qrlew_datasets.files import SQL, CSV
44

55
def test_files():
66
for sql_source in ['extract', 'financial', 'hepatitis', 'imdb', 'retail']:

0 commit comments

Comments
 (0)