Method to add a table and its columns to and ObjectWithDatabase

This commit is contained in:
Davte 2022-12-10 18:46:20 +01:00
parent 881d249256
commit 55b47ed1f7
Signed by: Davte
GPG Key ID: 70336F92E6814706
2 changed files with 31 additions and 1 deletions

View File

@ -11,7 +11,7 @@ __author__ = "Davide Testa"
__email__ = "davide@davte.it"
__credits__ = ["Marco Origlia", "Nick Lee @Nickoala"]
__license__ = "GNU General Public License v3.0"
__version__ = "2.8.8"
__version__ = "2.8.9"
__maintainer__ = "Davide Testa"
__contact__ = "t.me/davte"

View File

@ -2,6 +2,7 @@
# Standard library modules
import logging
from typing import Tuple
# Third party modules
import dataset
@ -71,3 +72,32 @@ class ObjectWithDatabase(object):
)
except Exception as e:
logging.error(f"{e}")
def add_table_and_columns_if_not_existent(self,
table_name: str,
columns: Tuple[
Tuple[str,
dataset.database.Types],
...] = None):
"""Create table (if it does not exist) and add given columns (if missing).
@param table_name: Table name (string)
@param columns: Table columns as tuples of column name and type
@return: None
"""
if table_name not in self.db.tables:
table = self.db.create_table(table_name=table_name)
logging.info(f"Created table `{table_name}`")
else:
table = self.db[table_name]
if columns is None:
columns = []
for column_name, column_type in columns:
if not table.has_column(column_name):
table.create_column(
column_name,
column_type
)
logging.info(f"Added column `{column_name}` "
f"(type `{column_type}`) "
f"to table `{table_name}`")