sqlalchemy-query-helpers 1.0.101__py3-none-any.whl → 1.0.103__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.

Potentially problematic release.


This version of sqlalchemy-query-helpers might be problematic. Click here for more details.

@@ -16,9 +16,15 @@ class DB:
16
16
  Session: sessionmaker = None
17
17
  session: Session = None
18
18
 
19
- def __init__(self, db_name, base: DeclarativeMeta, use_os_env=True, echo=False):
19
+ def __init__(self, db_name, base: DeclarativeMeta, db_url: str | None = None, echo=False):
20
+ """
21
+ :param db_url: URL as "{user}:{password}@{host}" without [schema + netloc],
22
+ that will use as f'mysql+pymysql://{db_url}'.
23
+ It's convenient to store this string as an OS environment variable.
24
+ None - Use OS environment variables: 'DB_USER', 'DB_PASSWORD', 'DB_HOST'.
25
+ """
20
26
  self.base = base
21
- engine_str = self.make_engine_str(use_os_env)
27
+ engine_str = self.make_engine_str(db_url)
22
28
  self.engine = create_engine(f'{engine_str}/{db_name}', echo=echo)
23
29
  self.Session = sessionmaker(bind=self.engine)
24
30
  # self.session = self.Session()
@@ -31,12 +37,14 @@ class DB:
31
37
  self.session.close()
32
38
 
33
39
  @staticmethod
34
- def make_engine_str(use_os_env) -> str:
40
+ def make_engine_str(db_url: str | None) -> str:
35
41
  """
36
42
  Create an engine string (schema + netloc), like "mysql+pymysql://USER:PASSWORD@HOST"
37
- :param use_os_env: Use OS envs 'DB_USER', 'DB_PASSWORD', 'DB_HOST', instead the `cfg.py` file
43
+ :param db_url: URL as "{user}:{password}@{host}" that will use as f'mysql+pymysql://{db_url}'.
44
+ It's convenient to store this string as an OS environment variable.
45
+ None - Use OS environment variables: 'DB_USER', 'DB_PASSWORD', 'DB_HOST'.
38
46
  """
39
- if use_os_env:
47
+ if not db_url:
40
48
  import os
41
49
  try:
42
50
  user = os.environ['DB_USER']
@@ -44,9 +52,9 @@ class DB:
44
52
  host = os.environ['DB_HOST']
45
53
  except KeyError:
46
54
  raise RuntimeError("Set the 'DB_USER', 'DB_PASSWORD', 'DB_HOST' OS env variables")
55
+ engine_str = f'mysql+pymysql://{user}:{password}@{host}'
47
56
  else:
48
- from cfg import user, password, host
49
- engine_str = f'mysql+pymysql://{user}:{password}@{host}'
57
+ engine_str = f'mysql+pymysql://{db_url}'
50
58
  return engine_str
51
59
 
52
60
  def get_predefined_table(self, table_name: str, base_metadata=None):
@@ -230,7 +238,8 @@ class DB:
230
238
  stmt = insert(t).values(rows_to_insert)
231
239
  # need to remove primary or unique keys on using, else will error
232
240
  if filter_unque_primary_keys:
233
- update_dict = {x.name: x for x in stmt.inserted for c in t._sa_class_manager.mapper.columns._all_columns
241
+ table_columns = t.columns._all_columns if isinstance(t, Table) else t._sa_class_manager.mapper.columns._all_columns
242
+ update_dict = {x.name: x for x in stmt.inserted for c in table_columns
234
243
  if x.name == c.name and c.unique is not True and c.primary_key is not True}
235
244
  else:
236
245
  update_dict = {x.name: x for x in stmt.inserted}
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sqlalchemy-query-helpers
3
- Version: 1.0.101
3
+ Version: 1.0.103
4
4
  Summary: Some helpers for SQLAlchemy
5
5
  Author-email: vladiscripts <blagopoluchie12@gmail.com>
6
6
  Project-URL: Homepage, https://github.com/vladiscripts/sqlalchemy-query-helpers
@@ -0,0 +1,7 @@
1
+ sqlalchemy_query_helpers/__init__.py,sha256=xxmsXX2HKm1K8Ay9sy_tXGkPDWz3NXJI0s4xiwPckr0,39
2
+ sqlalchemy_query_helpers/main.py,sha256=AkpIVLgyg74Ch22avp-RkRVhzrJnOI3rzDfkl03skNg,13806
3
+ sqlalchemy_query_helpers-1.0.103.dist-info/LICENSE,sha256=XUL1pa84eZAnKR9S2WnYrv2M523Oysejy3KPlVSyCks,1069
4
+ sqlalchemy_query_helpers-1.0.103.dist-info/METADATA,sha256=D-41uVz5Eta_wxbHlKD5KOYMH8KXXb2jS9qCD499OaY,2599
5
+ sqlalchemy_query_helpers-1.0.103.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
6
+ sqlalchemy_query_helpers-1.0.103.dist-info/top_level.txt,sha256=3CUM4jiTua2frHF1satgUAYlW0QfDsvdkxO_6Fj_0zY,25
7
+ sqlalchemy_query_helpers-1.0.103.dist-info/RECORD,,
@@ -1,7 +0,0 @@
1
- sqlalchemy_query_helpers/__init__.py,sha256=xxmsXX2HKm1K8Ay9sy_tXGkPDWz3NXJI0s4xiwPckr0,39
2
- sqlalchemy_query_helpers/main.py,sha256=Ls89jPpiJC12LvQqw-huNZVwZY9oVQJVqmt6i5HxKpM,13188
3
- sqlalchemy_query_helpers-1.0.101.dist-info/LICENSE,sha256=XUL1pa84eZAnKR9S2WnYrv2M523Oysejy3KPlVSyCks,1069
4
- sqlalchemy_query_helpers-1.0.101.dist-info/METADATA,sha256=jUe0cZDU-4jtGjPPMKzu11_QZBj8H-VGDFJ820sfWgM,2599
5
- sqlalchemy_query_helpers-1.0.101.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
6
- sqlalchemy_query_helpers-1.0.101.dist-info/top_level.txt,sha256=3CUM4jiTua2frHF1satgUAYlW0QfDsvdkxO_6Fj_0zY,25
7
- sqlalchemy_query_helpers-1.0.101.dist-info/RECORD,,