sqlalchemy-query-helpers 1.0.103__py3-none-any.whl → 1.0.104__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.
- sqlalchemy_query_helpers/main.py +29 -23
- {sqlalchemy_query_helpers-1.0.103.dist-info → sqlalchemy_query_helpers-1.0.104.dist-info}/METADATA +3 -2
- sqlalchemy_query_helpers-1.0.104.dist-info/RECORD +7 -0
- {sqlalchemy_query_helpers-1.0.103.dist-info → sqlalchemy_query_helpers-1.0.104.dist-info}/WHEEL +1 -1
- sqlalchemy_query_helpers-1.0.103.dist-info/RECORD +0 -7
- {sqlalchemy_query_helpers-1.0.103.dist-info → sqlalchemy_query_helpers-1.0.104.dist-info/licenses}/LICENSE +0 -0
- {sqlalchemy_query_helpers-1.0.103.dist-info → sqlalchemy_query_helpers-1.0.104.dist-info}/top_level.txt +0 -0
sqlalchemy_query_helpers/main.py
CHANGED
|
@@ -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
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
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
|
-
|
|
129
|
-
|
|
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
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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:
|
{sqlalchemy_query_helpers-1.0.103.dist-info → sqlalchemy_query_helpers-1.0.104.dist-info}/METADATA
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: sqlalchemy-query-helpers
|
|
3
|
-
Version: 1.0.
|
|
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
|
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
sqlalchemy_query_helpers/__init__.py,sha256=xxmsXX2HKm1K8Ay9sy_tXGkPDWz3NXJI0s4xiwPckr0,39
|
|
2
|
+
sqlalchemy_query_helpers/main.py,sha256=4bEa1vnm7iUdykmgJi9b8D5SWNog93i6OrnUHgFhe30,14006
|
|
3
|
+
sqlalchemy_query_helpers-1.0.104.dist-info/licenses/LICENSE,sha256=XUL1pa84eZAnKR9S2WnYrv2M523Oysejy3KPlVSyCks,1069
|
|
4
|
+
sqlalchemy_query_helpers-1.0.104.dist-info/METADATA,sha256=X_47uSGf-vYqFXZIHRlNdx9R6-GRaWWSDOo2XBJli-M,2621
|
|
5
|
+
sqlalchemy_query_helpers-1.0.104.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
6
|
+
sqlalchemy_query_helpers-1.0.104.dist-info/top_level.txt,sha256=3CUM4jiTua2frHF1satgUAYlW0QfDsvdkxO_6Fj_0zY,25
|
|
7
|
+
sqlalchemy_query_helpers-1.0.104.dist-info/RECORD,,
|
|
@@ -1,7 +0,0 @@
|
|
|
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,,
|
|
File without changes
|
|
File without changes
|