sqlalchemy-query-helpers 1.0.103__tar.gz → 1.0.104__tar.gz

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.

@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: sqlalchemy-query-helpers
3
- Version: 1.0.103
3
+ Version: 1.0.104
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
@@ -12,6 +12,7 @@ Requires-Python: >=3.10
12
12
  Description-Content-Type: text/markdown
13
13
  License-File: LICENSE
14
14
  Requires-Dist: sqlalchemy
15
+ Dynamic: license-file
15
16
 
16
17
  Пакет содержит хелперы для пакета SQLAlchmy - методов `insert`, `upsert`, `update` и другое.
17
18
 
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "sqlalchemy-query-helpers"
7
- version = "1.0.103"
7
+ version = "1.0.104"
8
8
  authors = [
9
9
  { name = "vladiscripts", email = "blagopoluchie12@gmail.com" },
10
10
  ]
@@ -1,5 +1,6 @@
1
1
  from sqlalchemy import create_engine, MetaData, Table, select
2
2
  from sqlalchemy.orm import sessionmaker, Query, DeclarativeMeta, session
3
+ from sqlalchemy.orm import declarative_base
3
4
  from sqlalchemy.orm.session import Session
4
5
  from sqlalchemy.orm.attributes import InstrumentedAttribute
5
6
  from sqlalchemy.dialects.mysql import insert
@@ -114,19 +115,21 @@ class DB:
114
115
  return new_rowid
115
116
 
116
117
  def insert_many(self, t, rows: Union[list, tuple], mfields: Union[list, tuple] = None, do_commit=True):
117
- for row in rows:
118
- row = self.__to_dict(row, mfields, use_orm_keys=True)
119
- m = t(**row)
120
- self.session.add(m)
121
- if do_commit:
122
- self.session.commit()
118
+ with self.Session() as s:
119
+ for row in rows:
120
+ row = self.__to_dict(row, mfields, use_orm_keys=True)
121
+ m = t(**row)
122
+ s.add(m)
123
+ if do_commit:
124
+ s.commit()
123
125
 
124
- def insert_one(self, t, row: Union[list, tuple], mfields: Union[list, tuple] = None, ignore=False):
126
+ def insert_one(self, t, row: Union[dict, list, tuple], mfields: Union[list, tuple] = None, ignore=False):
125
127
  q = insert(t).values(self.__to_dict(row, mfields))
126
128
  if ignore:
127
129
  q = q.prefix_with('IGNORE', dialect='mysql')
128
- r = self.session.execute(q)
129
- self.session.commit()
130
+ with self.Session() as s:
131
+ r = s.execute(q)
132
+ s.commit()
130
133
  return r.lastrowid
131
134
 
132
135
  def insert_ignore(self, t, row: Union[dict, list, tuple], mfields: Iterable[InstrumentedAttribute] = None) -> bool:
@@ -134,18 +137,19 @@ class DB:
134
137
  return is_inserted
135
138
 
136
139
  def insert_ignore_many(self, t, rows: List[dict], mfields: Iterable[InstrumentedAttribute] = None) -> bool:
137
- is_inserted = False
138
- for row in rows:
139
- row = self.__to_dict(row, mfields, use_orm_keys=True)
140
- try:
141
- with self.session.begin_nested():
142
- m = t(**row)
143
- self.session.add(m)
144
- is_inserted = True
145
- except IntegrityError:
146
- # print(f'already in DB: {row}')
147
- pass
148
- self.session.commit()
140
+ with self.Session() as s:
141
+ is_inserted = False
142
+ for row in rows:
143
+ row = self.__to_dict(row, mfields, use_orm_keys=True)
144
+ try:
145
+ with s.begin_nested():
146
+ m = t(**row)
147
+ s.add(m)
148
+ is_inserted = True
149
+ except IntegrityError:
150
+ # print(f'already in DB: {row}')
151
+ pass
152
+ s.commit()
149
153
  return is_inserted
150
154
 
151
155
  def insert_ignore_core(self, t, row: Union[dict, list, tuple], mfields: Union[list, tuple] = None) -> None:
@@ -178,7 +182,8 @@ class DB:
178
182
  def update(self, t, row: Union[dict, list, tuple], cause_keys: Union[list, tuple], mfields: Union[list, tuple] = None) -> (bool, bool):
179
183
  row = self.__to_dict(row, mfields)
180
184
  in_keys, not_in_keys = self.__check_modelkeys(row, cause_keys) # get_check_args(row, keys)
181
- rows_updates = Query(t, session=self.session).filter_by(**in_keys).update(not_in_keys)
185
+ with self.Session() as s:
186
+ rows_updates = s.query(t).filter_by(**in_keys).update(not_in_keys)
182
187
  # q = update(t).values(**not_in_keys).where(**in_keys)
183
188
  # rows_updates = self.db.session.execute(q)
184
189
  # self.db.session.commit()
@@ -192,7 +197,8 @@ class DB:
192
197
  cause_dict, to_insert_dict = self.__check_modelkeys(row, cause_dict)
193
198
  # r = Query(t, session=self.session).filter_by(**cause_dict).first()
194
199
  q = select(t).where(**cause_dict).limit(1)
195
- r = self.session.execute(q).first()
200
+ with self.Session() as s:
201
+ r = s.execute(q).first()
196
202
  if r:
197
203
  for k, v in to_insert_dict.items():
198
204
  if vars(r)[k] != v:
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: sqlalchemy-query-helpers
3
- Version: 1.0.103
3
+ Version: 1.0.104
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
@@ -12,6 +12,7 @@ Requires-Python: >=3.10
12
12
  Description-Content-Type: text/markdown
13
13
  License-File: LICENSE
14
14
  Requires-Dist: sqlalchemy
15
+ Dynamic: license-file
15
16
 
16
17
  Пакет содержит хелперы для пакета SQLAlchmy - методов `insert`, `upsert`, `update` и другое.
17
18