dbhydra 2.2.8__py3-none-any.whl → 2.2.9__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
dbhydra/dbhydra_core.py CHANGED
@@ -22,8 +22,8 @@ class Jsonable(str):
22
22
  """Is used as type in python_database_type_mapping"""
23
23
  pass
24
24
 
25
- class BLOB(str):
26
- """Store BLOBS up to 16MB."""
25
+ class Blob(str):
26
+ """Store BLOBs up to 16MB."""
27
27
  pass
28
28
 
29
29
 
@@ -58,6 +58,7 @@ class AbstractDb(abc.ABC):
58
58
  'Union': 'object',
59
59
  'Optional': 'object',
60
60
  'Jsonable': 'Jsonable',
61
+ 'Blob': 'Blob',
61
62
  # 'FrozenSet': frozenset,
62
63
  # 'Deque': list,
63
64
  # 'Any': object,
dbhydra/src/mysql_db.py CHANGED
@@ -20,7 +20,7 @@ class MysqlDb(AbstractDb):
20
20
  'bool': "tinyint",
21
21
  'datetime': "datetime",
22
22
  'Jsonable': "json",
23
- 'BLOB': "mediumblob",
23
+ 'Blob': "mediumblob",
24
24
  }
25
25
 
26
26
  def __init__(self, *args, **kwargs):
dbhydra/src/tables.py CHANGED
@@ -5,7 +5,6 @@ import abc
5
5
  import time
6
6
  #xlsx imports
7
7
  import pathlib
8
- import pymysql
9
8
  from dbhydra.src.abstract_table import AbstractTable, AbstractSelectable, AbstractJoinable
10
9
  import binascii
11
10
 
@@ -906,6 +905,11 @@ class XlsxTable(AbstractTable):
906
905
  self.table_directory_path: pathlib.Path = self.db1.db_directory_path / table_filename
907
906
 
908
907
  def _save_table(self, df: pd.DataFrame):
908
+ blob_columns = [
909
+ column for column, type_ in self.column_type_dict.items() if type_ == "Blob"
910
+ ]
911
+ df[blob_columns] = df[blob_columns].map(lambda x: x.hex() if x is not None else None)
912
+
909
913
  if self.db1.is_csv:
910
914
  df.to_csv(self.table_directory_path, index=False)
911
915
  else:
@@ -963,6 +967,9 @@ class XlsxTable(AbstractTable):
963
967
  date_columns = [
964
968
  column for column, type_ in self.column_type_dict.items() if type_ == "datetime"
965
969
  ]
970
+ blob_columns = [
971
+ column for column, type_ in self.column_type_dict.items() if type_ == "Blob"
972
+ ]
966
973
 
967
974
  # BUG: If XlsxTable is being accessed by multiple threads, read operation
968
975
  # might fail due to race conditions. Add retry mechanism to handle these cases.
@@ -977,6 +984,8 @@ class XlsxTable(AbstractTable):
977
984
  else:
978
985
  print(f"Failed to read data from {self.table_directory_path}, returning empty DataFrame")
979
986
  df = pd.DataFrame(columns=self.columns)
987
+
988
+ df[blob_columns] = df[blob_columns].map(lambda x: bytes.fromhex(x) if x else None)
980
989
  return df
981
990
 
982
991
  def _select(self, column_type_map, date_columns):
dbhydra/src/xlsx_db.py CHANGED
@@ -41,7 +41,8 @@ class XlsxDb(AbstractDb):
41
41
  'dict': "str",
42
42
  'bool': "bool",
43
43
  'datetime': "datetime",
44
- 'Jsonable': "str"
44
+ 'Jsonable': "str",
45
+ 'Blob': "Blob"
45
46
  }
46
47
 
47
48
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: dbhydra
3
- Version: 2.2.8
3
+ Version: 2.2.9
4
4
  Summary: Data science friendly ORM combining Python
5
5
  Home-page: https://github.com/DovaX/dbhydra
6
6
  Author: DovaX
@@ -1,25 +1,25 @@
1
1
  dbhydra/__init__.py,sha256=DCocEeXf4QxdVlBRlNiFvuP5IZJ5aa77_DbUR-_4C14,65
2
- dbhydra/dbhydra_core.py,sha256=gMroDA_kVph7JFimbsNpGZ33f-qiGhw-su9EUkNN0bA,2537
2
+ dbhydra/dbhydra_core.py,sha256=jn0VC3LkawR2P0Yd_oZNEXqP9o2BPEtOBWGzgFwfJyA,2537
3
3
  dbhydra/test_migrator.py,sha256=e3Nnb2mCd3CfjhjSexNg1tXVJMjkl5cCoYcuhbfZ4pM,803
4
4
  dbhydra/src/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
- dbhydra/src/abstract_db.py,sha256=lEP24vWz0HdGjQgSoHnawNK_NvRlSLuvzVSiiawssuw,5901
5
+ dbhydra/src/abstract_db.py,sha256=JUIiFXGfbRbFQDWoxNS8ZAoYZMzgGeydd2KDC6zOlbY,5926
6
6
  dbhydra/src/abstract_table.py,sha256=4oZO5if4wMbyEWtr5JkR6LPxbxjUwMVf4xITbE-2RXE,17755
7
7
  dbhydra/src/bigquery_db.py,sha256=77XsgvYbANlvYaJnuVve-kz-PNBx_CHoYCL-eYnA8e4,1834
8
8
  dbhydra/src/migrator.py,sha256=QzaODEFfraD9_6HN_Osaidaj-nLYQryCYYWwJtUu3n8,18931
9
9
  dbhydra/src/mongo_db.py,sha256=mP48zRjI7mXKpm45R8prroZI-Eo7JKf0KJqGX-oTy3w,1922
10
- dbhydra/src/mysql_db.py,sha256=b0OV1nrYJBbzgTgBDKdLeENXQxKuYs_KhbvGvyymRf4,3180
10
+ dbhydra/src/mysql_db.py,sha256=meMnFoY1Gx3Ay8jriqliJvByVUK4NPCQn_Zm1hEpwuU,3180
11
11
  dbhydra/src/postgres_db.py,sha256=L7MaBq_6ArwDSP_5LaEqK58oLxZ1X7FgIokcDOSB7wk,1805
12
12
  dbhydra/src/sqlserver_db.py,sha256=9Xi3NAliqM79MTV8fpNQb0nWMH8Bqjl1leJSEqgyT94,3611
13
- dbhydra/src/tables.py,sha256=F_WEookoyjv4r9HGfWdCquCc9MP5vH3vfonBPKNRQ3k,47184
14
- dbhydra/src/xlsx_db.py,sha256=z6d-IjMYMmXC591Mt5DcxIYWyluanjPRFd-sXtjjXww,3514
13
+ dbhydra/src/tables.py,sha256=v2VxgjKiNQyCdQCuovhpeDklPaqOcPRssTAP0mF2jTw,47613
14
+ dbhydra/src/xlsx_db.py,sha256=deLmOXu3ZuM4a2Fzf7LLcdYG8JQIfULaLd4jZzMnceo,3539
15
15
  dbhydra/src/errors/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
16
16
  dbhydra/src/errors/exceptions.py,sha256=LVpfbTd3NHfQIM-D5TFAU6hOZwGQ3b5DwFD4B6vtf2U,149
17
17
  dbhydra/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
18
18
  dbhydra/tests/test_cases.py,sha256=eAFGaHaIaab3md3HHm2_ryb_HHfObtcXDAEzLh4qWx8,508
19
19
  dbhydra/tests/test_mongo.py,sha256=M8TD72M0iQAk7ZcLTWwLmcmmF_zwALnYEGTWjhQlq0s,1979
20
20
  dbhydra/tests/test_sql.py,sha256=aPFXyA0jh8o9VG3B5f9fNz7qDbuVPZ9TcE2twn5dAeQ,3126
21
- dbhydra-2.2.8.dist-info/LICENSE,sha256=k49Yga8CP889JJaHlOpGFzr_be2nqMoep2chYeIDctk,1091
22
- dbhydra-2.2.8.dist-info/METADATA,sha256=oHsjGJM9YAxfzovKPp2Nlwy9jqomXk1FZzuGBEEgWlM,2298
23
- dbhydra-2.2.8.dist-info/WHEEL,sha256=2wepM1nk4DS4eFpYrW1TTqPcoGNfHhhO_i5m4cOimbo,92
24
- dbhydra-2.2.8.dist-info/top_level.txt,sha256=oO4Gf1T8_txIsIlp11GI0k7PtBIMb9GRwb5ObF4MLVg,8
25
- dbhydra-2.2.8.dist-info/RECORD,,
21
+ dbhydra-2.2.9.dist-info/LICENSE,sha256=k49Yga8CP889JJaHlOpGFzr_be2nqMoep2chYeIDctk,1091
22
+ dbhydra-2.2.9.dist-info/METADATA,sha256=ZNribd9pDJrRIwRa80kNK4m5sWC1Sl_96xCp97psRao,2298
23
+ dbhydra-2.2.9.dist-info/WHEEL,sha256=2wepM1nk4DS4eFpYrW1TTqPcoGNfHhhO_i5m4cOimbo,92
24
+ dbhydra-2.2.9.dist-info/top_level.txt,sha256=oO4Gf1T8_txIsIlp11GI0k7PtBIMb9GRwb5ObF4MLVg,8
25
+ dbhydra-2.2.9.dist-info/RECORD,,