Skip to content

Commit 0f878ee

Browse files
authored
Merge pull request #5 from xmalet-nrcan/dev/update_connection
Dev/update connection
2 parents 9d8c29c + c53db31 commit 0f878ee

File tree

9 files changed

+336
-437
lines changed

9 files changed

+336
-437
lines changed

.github/workflows/ci-release.yml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,3 +129,10 @@ jobs:
129129
draft: false
130130
env:
131131
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
132+
133+
- name: Publier sur PyPI
134+
uses: pypa/[email protected]
135+
with:
136+
user: __token__
137+
password: ${{ secrets.PYPI_TOKEN }}
138+
packages_dir: dist/

README.md

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
from nrcan_etl_toolbox.etl_toolbox.reader.source_readers import ExcelReader
12

23
# NRCAN ETL Toolbox
34

@@ -47,7 +48,7 @@ pip install dist/nrcan_etl_toolbox-*.whl
4748
```python
4849
from nrcan_etl_toolbox.etl_logging import CustomLogger
4950

50-
logger = CustomLogger(level='INFO'
51+
logger = CustomLogger(name="Test Logger", level='INFO'
5152
,logger_type='verbose',
5253
logger_file_name='test_logger.log')
5354

@@ -61,6 +62,7 @@ logger.error("Processing error", exc_info=True)
6162

6263
```python
6364
from nrcan_etl_toolbox.etl_toolbox.reader import ReaderFactory
65+
from nrcan_etl_toolbox.etl_toolbox.reader.source_readers import ExcelReader
6466

6567
# Creating a CSV reader
6668
csv_reader = ReaderFactory(input_source="data.csv")
@@ -69,6 +71,24 @@ data = csv_reader.data
6971
# Creating a Shapefile reader
7072
shp_reader = ReaderFactory(input_source="data.shp")
7173
geo_data = shp_reader.data
74+
75+
# Creating a PostGIS reader
76+
postgis_reader = ReaderFactory(input_source="postgresql://user:password@host:port/database", # Use the connection string for your database
77+
table_name="table_name",
78+
schema="schema_name")
79+
geo_data = postgis_reader.data
80+
81+
# Creating an Excel reader
82+
reader = ReaderFactory(input_source="data.xlsx")
83+
# Get the Reader object
84+
excel_reader : ExcelReader = reader.reader
85+
# If excel file contains multiple sheets,
86+
# data will be a dictionary with sheet names as keys and dataframes as values
87+
data = excel_reader.dataframe
88+
# data = {'Sheet1': df1, 'Sheet2': df2}
89+
# To read a specific sheet, use the sheet_name parameter
90+
data = excel_reader.read_sheet('Sheet1')
91+
# data = df1
7292
```
7393

7494
### Database Interface
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
class DatabaseConnector:
2+
engine: sqlalchemy.engine.Engine = None
3+
SessionLocal = None
4+
5+
def __init__(self, database_url: str):
6+
if not DatabaseConnector.engine:
7+
DatabaseConnector.engine = create_engine(database_url, pool_pre_ping=True, pool_recycle=3600)
8+
DatabaseConnector.SessionLocal = sessionmaker(bind=DatabaseConnector.engine, expire_on_commit=False, autoflush=False)
9+
Base.metadata.create_all(DatabaseConnector.engine)
10+
11+
@contextmanager
12+
def get_session(self):
13+
session = self.SessionLocal()
14+
try:
15+
yield session
16+
session.commit()
17+
except:
18+
session.rollback()
19+
raise
20+
finally:
21+
session.close()

0 commit comments

Comments
 (0)