reydb 1.2.18__py3-none-any.whl → 1.2.20__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.
reydb/rorm.py CHANGED
@@ -2,7 +2,7 @@
2
2
  # -*- coding: utf-8 -*-
3
3
 
4
4
  """
5
- @Time : 2025-09-23 00:50:32
5
+ @Time : 2025-09-23
6
6
  @Author : Rey
7
7
  @Contact : reyxbo@163.com
8
8
  @Explain : Database ORM methods.
@@ -32,7 +32,7 @@ from datetime import datetime, date, time, timedelta
32
32
  from warnings import filterwarnings
33
33
  from reykit.rbase import CallableT, Null, throw, is_instance
34
34
 
35
- from . import rdb
35
+ from . import rengine
36
36
  from .rbase import (
37
37
  SessionT,
38
38
  SessionTransactionT,
@@ -69,7 +69,7 @@ __all__ = (
69
69
  )
70
70
 
71
71
 
72
- DatabaseT = TypeVar('DatabaseT', 'rdb.Database', 'rdb.DatabaseAsync')
72
+ DatabaseEngineT = TypeVar('DatabaseEngineT', 'rengine.DatabaseEngine', 'rengine.DatabaseEngineAsync')
73
73
  DatabaseORMModelT = TypeVar('DatabaseORMModelT', bound='DatabaseORMModel')
74
74
  DatabaseORMT = TypeVar('DatabaseORMT', 'DatabaseORM', 'DatabaseORMAsync')
75
75
  DatabaseORMSessionT = TypeVar('DatabaseORMSessionT', 'DatabaseORMSession', 'DatabaseORMSessionAsync')
@@ -303,11 +303,9 @@ class DatabaseORMModelField(DatabaseORMBase, FieldInfo):
303
303
  kwargs['alias'] = kwargs['sa_column_kwargs']['name'] = kwargs.pop('field_name')
304
304
 
305
305
  ## Key auto.
306
- if kwargs.get('key_auto'):
307
- kwargs['sa_column_kwargs']['autoincrement'] = True
306
+ if kwargs.pop('key_auto', False):
308
307
  kwargs['primary_key'] = True
309
- else:
310
- kwargs['sa_column_kwargs']['autoincrement'] = False
308
+ kwargs['sa_column_kwargs']['autoincrement'] = True
311
309
 
312
310
  ## Key.
313
311
  if kwargs.get('primary_key'):
@@ -336,7 +334,11 @@ class DatabaseORMModelField(DatabaseORMBase, FieldInfo):
336
334
  ## Argument default.
337
335
  arg_default = kwargs.pop('arg_default', Null)
338
336
  if arg_default == Null:
339
- if kwargs['nullable']:
337
+ if (
338
+ kwargs['nullable']
339
+ or kwargs['sa_column_kwargs'].get('autoincrement')
340
+ or kwargs['sa_column_kwargs'].get('server_default') is not None
341
+ ):
340
342
  kwargs['default'] = None
341
343
  elif callable(arg_default):
342
344
  kwargs['default_factory'] = arg_default
@@ -502,23 +504,23 @@ class DatabaseORMModelMethod(DatabaseORMBase):
502
504
  return instance
503
505
 
504
506
 
505
- class DatabaseORMSuper(DatabaseORMBase, Generic[DatabaseT, DatabaseORMSessionT]):
507
+ class DatabaseORMSuper(DatabaseORMBase, Generic[DatabaseEngineT, DatabaseORMSessionT]):
506
508
  """
507
509
  Database ORM super type.
508
510
  """
509
511
 
510
512
 
511
- def __init__(self, db: DatabaseT) -> None:
513
+ def __init__(self, engine: DatabaseEngineT) -> None:
512
514
  """
513
515
  Build instance attributes.
514
516
 
515
517
  Parameters
516
518
  ----------
517
- db: Database instance.
519
+ engine: Database engine.
518
520
  """
519
521
 
520
522
  # Build.
521
- self.db = db
523
+ self.engine = engine
522
524
  self.__sess = self.session(True)
523
525
 
524
526
  ## Method.
@@ -557,13 +559,13 @@ class DatabaseORMSuper(DatabaseORMBase, Generic[DatabaseT, DatabaseORMSessionT])
557
559
  return sess
558
560
 
559
561
 
560
- class DatabaseORM(DatabaseORMSuper['rdb.Database', 'DatabaseORMSession']):
562
+ class DatabaseORM(DatabaseORMSuper['rengine.DatabaseEngine', 'DatabaseORMSession']):
561
563
  """
562
564
  Database ORM type.
563
565
  """
564
566
 
565
567
 
566
- class DatabaseORMAsync(DatabaseORMSuper['rdb.DatabaseAsync', 'DatabaseORMSessionAsync']):
568
+ class DatabaseORMAsync(DatabaseORMSuper['rengine.DatabaseEngineAsync', 'DatabaseORMSessionAsync']):
567
569
  """
568
570
  Asynchronous database ORM type.
569
571
  """
@@ -603,7 +605,7 @@ class DatabaseORMSessionSuper(
603
605
  # Build.
604
606
  self.orm = orm
605
607
  self.autocommit = autocommit
606
- self.sess: SessionT | None = None
608
+ self.session: SessionT | None = None
607
609
  self.begin: SessionTransactionT | None = None
608
610
 
609
611
 
@@ -774,10 +776,10 @@ class DatabaseORMSession(
774
776
  """
775
777
 
776
778
  # Create.
777
- if self.sess is None:
778
- self.sess = Session(self.orm.db.engine)
779
+ if self.session is None:
780
+ self.session = Session(self.orm.engine.engine)
779
781
 
780
- return self.sess
782
+ return self.session
781
783
 
782
784
 
783
785
  def get_begin(self) -> SessionTransaction:
@@ -828,9 +830,18 @@ class DatabaseORMSession(
828
830
  if self.begin is not None:
829
831
  self.begin.close()
830
832
  self.begin = None
831
- if self.sess is not None:
832
- self.sess.close()
833
- self.sess = None
833
+ if self.session is not None:
834
+ self.session.close()
835
+ self.session = None
836
+
837
+
838
+ def flush(self) -> None:
839
+ """
840
+ Send execution to database, can refresh increment primary key attribute value of model.
841
+ """
842
+
843
+ # Send.
844
+ self.session.flush()
834
845
 
835
846
 
836
847
  def wrap_transact(method: CallableT) -> CallableT:
@@ -847,17 +858,16 @@ class DatabaseORMSession(
847
858
  """
848
859
 
849
860
 
850
- # Define.
851
861
  @functools_wraps(method)
852
862
  def wrap(self: 'DatabaseORMSession', *args, **kwargs):
853
863
 
854
864
  # Session.
855
- if self.sess is None:
856
- self.sess = Session(self.orm.db.engine)
865
+ if self.session is None:
866
+ self.session = Session(self.orm.engine.engine)
857
867
 
858
868
  # Begin.
859
869
  if self.begin is None:
860
- self.begin = self.sess.begin()
870
+ self.begin = self.session.begin()
861
871
 
862
872
  # Execute.
863
873
  result = method(self, *args, **kwargs)
@@ -899,7 +909,7 @@ class DatabaseORMSession(
899
909
  throw(ValueError, tables)
900
910
 
901
911
  # Create.
902
- metadata.create_all(self.orm.db.engine, tables, skip)
912
+ metadata.create_all(self.orm.engine.engine, tables, skip)
903
913
 
904
914
 
905
915
  @wrap_transact
@@ -928,7 +938,7 @@ class DatabaseORMSession(
928
938
  throw(ValueError, tables)
929
939
 
930
940
  # Drop.
931
- metadata.drop_all(self.orm.db.engine, tables, skip)
941
+ metadata.drop_all(self.orm.engine.engine, tables, skip)
932
942
 
933
943
 
934
944
  @wrap_transact
@@ -953,14 +963,14 @@ class DatabaseORMSession(
953
963
  model = type(model)
954
964
 
955
965
  # Get.
956
- result = self.sess.get(model, key)
966
+ result = self.session.get(model, key)
957
967
 
958
968
  # Autucommit.
959
969
  if (
960
970
  self.autocommit
961
971
  and result is not None
962
972
  ):
963
- self.sess.expunge(result)
973
+ self.session.expunge(result)
964
974
 
965
975
  return result
966
976
 
@@ -990,7 +1000,7 @@ class DatabaseORMSession(
990
1000
  results = [
991
1001
  result
992
1002
  for key in keys
993
- if (result := self.sess.get(model, key)) is not None
1003
+ if (result := self.session.get(model, key)) is not None
994
1004
  ]
995
1005
 
996
1006
  return results
@@ -1016,7 +1026,7 @@ class DatabaseORMSession(
1016
1026
 
1017
1027
  # Get.
1018
1028
  select = Select(model)
1019
- models = self.sess.exec(select)
1029
+ models = self.session.exec(select)
1020
1030
  models = list(models)
1021
1031
 
1022
1032
  return models
@@ -1033,7 +1043,7 @@ class DatabaseORMSession(
1033
1043
  """
1034
1044
 
1035
1045
  # Add.
1036
- self.sess.add_all(models)
1046
+ self.session.add_all(models)
1037
1047
 
1038
1048
 
1039
1049
  @wrap_transact
@@ -1048,7 +1058,7 @@ class DatabaseORMSession(
1048
1058
 
1049
1059
  # Delete.
1050
1060
  for model in models:
1051
- self.sess.delete(model)
1061
+ self.session.delete(model)
1052
1062
 
1053
1063
 
1054
1064
  @wrap_transact
@@ -1063,7 +1073,7 @@ class DatabaseORMSession(
1063
1073
 
1064
1074
  # Refresh.
1065
1075
  for model in models:
1066
- self.sess.refresh(model)
1076
+ self.session.refresh(model)
1067
1077
 
1068
1078
 
1069
1079
  @wrap_transact
@@ -1078,7 +1088,7 @@ class DatabaseORMSession(
1078
1088
 
1079
1089
  # Refresh.
1080
1090
  for model in models:
1081
- self.sess.expire(model)
1091
+ self.session.expire(model)
1082
1092
 
1083
1093
 
1084
1094
  @overload
@@ -1134,7 +1144,7 @@ class DatabaseORMSessionAsync(
1134
1144
 
1135
1145
  # Close.
1136
1146
  await self.close()
1137
- await self.orm.db.dispose()
1147
+ await self.orm.engine.dispose()
1138
1148
 
1139
1149
 
1140
1150
  def get_sess(self) -> AsyncSession:
@@ -1147,10 +1157,10 @@ class DatabaseORMSessionAsync(
1147
1157
  """
1148
1158
 
1149
1159
  # Create.
1150
- if self.sess is None:
1151
- self.sess = AsyncSession(self.orm.db.engine)
1160
+ if self.session is None:
1161
+ self.session = AsyncSession(self.orm.engine.engine)
1152
1162
 
1153
- return self.sess
1163
+ return self.session
1154
1164
 
1155
1165
 
1156
1166
  async def get_begin(self) -> AsyncSessionTransaction:
@@ -1201,9 +1211,18 @@ class DatabaseORMSessionAsync(
1201
1211
  if self.begin is not None:
1202
1212
  await self.begin.rollback()
1203
1213
  self.begin = None
1204
- if self.sess is not None:
1205
- await self.sess.close()
1206
- self.sess = None
1214
+ if self.session is not None:
1215
+ await self.session.close()
1216
+ self.session = None
1217
+
1218
+
1219
+ async def flush(self) -> None:
1220
+ """
1221
+ Asynchronous send execution to database, can refresh increment primary key attribute value of model.
1222
+ """
1223
+
1224
+ # Send.
1225
+ await self.session.flush()
1207
1226
 
1208
1227
 
1209
1228
  def wrap_transact(method: CallableT) -> CallableT:
@@ -1220,7 +1239,6 @@ class DatabaseORMSessionAsync(
1220
1239
  """
1221
1240
 
1222
1241
 
1223
- # Define.
1224
1242
  @functools_wraps(method)
1225
1243
  async def wrap(self: 'DatabaseORMSessionAsync', *args, **kwargs):
1226
1244
 
@@ -1237,7 +1255,7 @@ class DatabaseORMSessionAsync(
1237
1255
  if self.autocommit:
1238
1256
  await self.commit()
1239
1257
  await self.close()
1240
- await self.orm.db.dispose()
1258
+ await self.orm.engine.dispose()
1241
1259
 
1242
1260
  return result
1243
1261
 
@@ -1271,7 +1289,7 @@ class DatabaseORMSessionAsync(
1271
1289
  throw(ValueError, tables)
1272
1290
 
1273
1291
  # Create.
1274
- conn = await self.sess.connection()
1292
+ conn = await self.session.connection()
1275
1293
  await conn.run_sync(metadata.create_all, tables, skip)
1276
1294
 
1277
1295
 
@@ -1301,7 +1319,7 @@ class DatabaseORMSessionAsync(
1301
1319
  throw(ValueError, tables)
1302
1320
 
1303
1321
  # Drop.
1304
- conn = await self.sess.connection()
1322
+ conn = await self.session.connection()
1305
1323
  await conn.run_sync(metadata.drop_all, tables, skip)
1306
1324
 
1307
1325
 
@@ -1327,14 +1345,14 @@ class DatabaseORMSessionAsync(
1327
1345
  model = type(model)
1328
1346
 
1329
1347
  # Get.
1330
- result = await self.sess.get(model, key)
1348
+ result = await self.session.get(model, key)
1331
1349
 
1332
1350
  # Autucommit.
1333
1351
  if (
1334
1352
  self.autocommit
1335
1353
  and result is not None
1336
1354
  ):
1337
- self.sess.expunge(result)
1355
+ self.session.expunge(result)
1338
1356
 
1339
1357
  return result
1340
1358
 
@@ -1364,7 +1382,7 @@ class DatabaseORMSessionAsync(
1364
1382
  results = [
1365
1383
  result
1366
1384
  for key in keys
1367
- if (result := await self.sess.get(model, key)) is not None
1385
+ if (result := await self.session.get(model, key)) is not None
1368
1386
  ]
1369
1387
 
1370
1388
  return results
@@ -1390,7 +1408,7 @@ class DatabaseORMSessionAsync(
1390
1408
 
1391
1409
  # Get.
1392
1410
  select = Select(model)
1393
- models = await self.sess.exec(select)
1411
+ models = await self.session.exec(select)
1394
1412
  models = list(models)
1395
1413
 
1396
1414
  return models
@@ -1407,7 +1425,7 @@ class DatabaseORMSessionAsync(
1407
1425
  """
1408
1426
 
1409
1427
  # Add.
1410
- self.sess.add_all(models)
1428
+ self.session.add_all(models)
1411
1429
 
1412
1430
 
1413
1431
  @wrap_transact
@@ -1422,7 +1440,7 @@ class DatabaseORMSessionAsync(
1422
1440
 
1423
1441
  # Delete.
1424
1442
  for model in models:
1425
- await self.sess.delete(model)
1443
+ await self.session.delete(model)
1426
1444
 
1427
1445
 
1428
1446
  @wrap_transact
@@ -1437,7 +1455,7 @@ class DatabaseORMSessionAsync(
1437
1455
 
1438
1456
  # Refresh.
1439
1457
  for model in models:
1440
- await self.sess.refresh(model)
1458
+ await self.session.refresh(model)
1441
1459
 
1442
1460
 
1443
1461
  @wrap_transact
@@ -1452,7 +1470,7 @@ class DatabaseORMSessionAsync(
1452
1470
 
1453
1471
  # Refresh.
1454
1472
  for model in models:
1455
- self.sess.expire(model)
1473
+ self.session.expire(model)
1456
1474
 
1457
1475
 
1458
1476
  @overload
@@ -1519,7 +1537,7 @@ class DatabaseORMStatement(DatabaseORMStatementSuper[DatabaseORMSession]):
1519
1537
  self.sess.get_begin()
1520
1538
 
1521
1539
  # Execute.
1522
- result: Result = self.sess.sess.exec(self)
1540
+ result: Result = self.sess.session.exec(self)
1523
1541
 
1524
1542
  ## Select.)
1525
1543
  if isinstance(self, Select):
@@ -1530,7 +1548,7 @@ class DatabaseORMStatement(DatabaseORMStatementSuper[DatabaseORMSession]):
1530
1548
 
1531
1549
  ## Select.
1532
1550
  if isinstance(self, Select):
1533
- self.sess.sess.expunge_all()
1551
+ self.sess.session.expunge_all()
1534
1552
 
1535
1553
  self.sess.commit()
1536
1554
  self.sess.close()
@@ -1564,7 +1582,7 @@ class DatabaseORMStatementAsync(DatabaseORMStatementSuper[DatabaseORMSessionAsyn
1564
1582
  await self.sess.get_begin()
1565
1583
 
1566
1584
  # Execute.
1567
- result: Result = await self.sess.sess.exec(self)
1585
+ result: Result = await self.sess.session.exec(self)
1568
1586
 
1569
1587
  ## Select.
1570
1588
  if isinstance(self, Select):
@@ -1575,11 +1593,11 @@ class DatabaseORMStatementAsync(DatabaseORMStatementSuper[DatabaseORMSessionAsyn
1575
1593
 
1576
1594
  ## Select.
1577
1595
  if isinstance(self, Select):
1578
- self.sess.sess.expunge_all()
1596
+ self.sess.session.expunge_all()
1579
1597
 
1580
1598
  await self.sess.commit()
1581
1599
  await self.sess.close()
1582
- await self.sess.orm.db.dispose()
1600
+ await self.sess.orm.engine.dispose()
1583
1601
 
1584
1602
  return result
1585
1603
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: reydb
3
- Version: 1.2.18
3
+ Version: 1.2.20
4
4
  Summary: Database method set.
5
5
  Project-URL: homepage, https://github.com/reyxbo/reydb/
6
6
  Author-email: Rey <reyxbo@163.com>
@@ -0,0 +1,16 @@
1
+ reydb/__init__.py,sha256=BnJsTzcwqeQ8-5Boqsehgcpc1eSDkv41v0kdb10gAgM,643
2
+ reydb/rall.py,sha256=5GI0yuwF72XypNZ1DYIxKizo2Z5pR88Uv0nUpHKYhCk,379
3
+ reydb/rbase.py,sha256=S3ip2PxvLn2Spgv5G_xd7xgC-U4wjEoAZ7Up25ZQvLk,8223
4
+ reydb/rbuild.py,sha256=6ZkU3LGkIk04KTPtd8fgTC4pX93p1tvbOhZWWEi-v5A,40846
5
+ reydb/rconfig.py,sha256=oOYGqhFzWVPx57D-Bbw6B2F9VmqGc_Y-aTy-mJd0Cgk,18163
6
+ reydb/rconn.py,sha256=K_k6cJ94yrPIFaSZ06enpguTWVPhDu67LHan41C1bRA,7023
7
+ reydb/rdb.py,sha256=X3ZScVFnPAm6Cqmsx13CCumQH3ZwEQcL4UqpoY42APg,2708
8
+ reydb/rengine.py,sha256=CoUh0n5ZG1oRdbcTqCl-s8R8ePXJtIxDg79E6dGx2dU,15644
9
+ reydb/rerror.py,sha256=M7RPXwywLYl5Vew7jfXxUxVnBrM1b_T6V9Izt4B8zI0,14791
10
+ reydb/rexec.py,sha256=hZe5SRbqo_aTpuB1vI2HXVx1FjtwvKGLRom3uzjTuqI,52949
11
+ reydb/rinfo.py,sha256=c5otyOikGMVnLFhPbtlgmnFBRR3NMP7xcmMW-LQdaQk,18314
12
+ reydb/rorm.py,sha256=mnfVf6fulTJ84EyjFqYijdAwdwaybBVvyZKNG4EhbwU,50065
13
+ reydb-1.2.20.dist-info/METADATA,sha256=3WSGgIL7ScE69ImeI9ma3zezy-rgNmZ0dxe1a1WPr1k,1647
14
+ reydb-1.2.20.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
15
+ reydb-1.2.20.dist-info/licenses/LICENSE,sha256=UYLPqp7BvPiH8yEZduJqmmyEl6hlM3lKrFIefiD4rvk,1059
16
+ reydb-1.2.20.dist-info/RECORD,,
@@ -1,15 +0,0 @@
1
- reydb/__init__.py,sha256=MJkZy2rOM2VSj_L2kaKe6CJfsg334vb3OLVUqavWKfM,558
2
- reydb/rall.py,sha256=IxSPGh77xz7ndDC7J8kZ_66Gq_xTAztGtnELUku1Ouw,364
3
- reydb/rbase.py,sha256=sl2lZWQVC5kXTJid2v5zmy1lMshYLm2NhEQi_dnY_Bw,8232
4
- reydb/rbuild.py,sha256=QZF26KDL6oRb6RyMEtIJcbiX9TJzK2aUPqjqGjflF7s,80834
5
- reydb/rconfig.py,sha256=cPFt9QI_lj0u4tChBJ0kHYf2G788epbT2oSYk2r24yo,18010
6
- reydb/rconn.py,sha256=guRaR8N6RuzZzujwaeq7HhKWTizF9SrUBqEAFjfjpoo,6909
7
- reydb/rdb.py,sha256=nieXxFqf07Dljl-12Ub8R8s-uNZjai7PN2rqlvOxyqw,15408
8
- reydb/rerror.py,sha256=O7lbnkAamQa1OKz6WJPeBUkzDTP6LNGqBqCfrI02DO4,14722
9
- reydb/rexec.py,sha256=uj87vAeKnqNg9tWCy0ycjI9uMj0IgZCS4waL9cC_mTY,52930
10
- reydb/rinfo.py,sha256=1lMnD-eN97vHrQ1DM8X7mQIhyLmCg6V0P2QwSeF07_c,18127
11
- reydb/rorm.py,sha256=-pb5SJBk2WOluWC0ci0OOCOKOj2MIxoy3oVRJ7whpFQ,49337
12
- reydb-1.2.18.dist-info/METADATA,sha256=SCX11Jre4BRem7gUw8lqaZ495-pNgrqhz45C3-3V4Ws,1647
13
- reydb-1.2.18.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
14
- reydb-1.2.18.dist-info/licenses/LICENSE,sha256=UYLPqp7BvPiH8yEZduJqmmyEl6hlM3lKrFIefiD4rvk,1059
15
- reydb-1.2.18.dist-info/RECORD,,
File without changes