execsql2 2.2.1__py3-none-any.whl → 2.4.0__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.
Files changed (78) hide show
  1. execsql/config.py +52 -0
  2. execsql/db/access.py +11 -3
  3. execsql/db/base.py +180 -135
  4. execsql/db/dsn.py +4 -0
  5. execsql/db/duckdb.py +4 -0
  6. execsql/db/factory.py +21 -0
  7. execsql/db/firebird.py +4 -0
  8. execsql/db/mysql.py +4 -0
  9. execsql/db/oracle.py +4 -0
  10. execsql/db/postgres.py +3 -0
  11. execsql/db/sqlite.py +3 -0
  12. execsql/db/sqlserver.py +11 -2
  13. execsql/exceptions.py +18 -0
  14. execsql/exporters/base.py +6 -0
  15. execsql/exporters/delimited.py +36 -0
  16. execsql/exporters/duckdb.py +4 -0
  17. execsql/exporters/feather.py +4 -0
  18. execsql/exporters/html.py +6 -0
  19. execsql/exporters/json.py +5 -6
  20. execsql/exporters/latex.py +4 -0
  21. execsql/exporters/ods.py +28 -7
  22. execsql/exporters/parquet.py +3 -0
  23. execsql/exporters/pretty.py +5 -0
  24. execsql/exporters/raw.py +5 -3
  25. execsql/exporters/sqlite.py +4 -0
  26. execsql/exporters/templates.py +16 -6
  27. execsql/exporters/values.py +4 -0
  28. execsql/exporters/xls.py +26 -7
  29. execsql/exporters/xml.py +3 -0
  30. execsql/exporters/zip.py +15 -0
  31. execsql/importers/base.py +2 -0
  32. execsql/importers/csv.py +2 -0
  33. execsql/importers/feather.py +2 -0
  34. execsql/importers/ods.py +2 -0
  35. execsql/importers/xls.py +2 -0
  36. execsql/metacommands/__init__.py +177 -1968
  37. execsql/metacommands/dispatch.py +2011 -0
  38. execsql/models.py +7 -0
  39. execsql/parser.py +10 -0
  40. execsql/script/__init__.py +95 -0
  41. execsql/script/control.py +162 -0
  42. execsql/{script.py → script/engine.py} +144 -406
  43. execsql/script/variables.py +281 -0
  44. execsql/types.py +29 -0
  45. execsql/utils/auth.py +2 -0
  46. execsql/utils/crypto.py +4 -6
  47. execsql/utils/datetime.py +1 -0
  48. execsql/utils/errors.py +11 -0
  49. execsql/utils/fileio.py +18 -0
  50. execsql/utils/gui.py +46 -0
  51. execsql/utils/mail.py +7 -17
  52. execsql/utils/numeric.py +2 -0
  53. execsql/utils/regex.py +9 -0
  54. execsql/utils/strings.py +16 -0
  55. execsql/utils/timer.py +2 -0
  56. execsql2-2.4.0.data/data/execsql2_extras/README.md +65 -0
  57. {execsql2-2.2.1.data → execsql2-2.4.0.data}/data/execsql2_extras/execsql.conf +1 -1
  58. {execsql2-2.2.1.dist-info → execsql2-2.4.0.dist-info}/METADATA +8 -1
  59. execsql2-2.4.0.dist-info/RECORD +108 -0
  60. execsql2-2.2.1.data/data/execsql2_extras/READ_ME.rst +0 -127
  61. execsql2-2.2.1.dist-info/RECORD +0 -104
  62. {execsql2-2.2.1.data → execsql2-2.4.0.data}/data/execsql2_extras/config_settings.sqlite +0 -0
  63. {execsql2-2.2.1.data → execsql2-2.4.0.data}/data/execsql2_extras/example_config_prompt.sql +0 -0
  64. {execsql2-2.2.1.data → execsql2-2.4.0.data}/data/execsql2_extras/make_config_db.sql +0 -0
  65. {execsql2-2.2.1.data → execsql2-2.4.0.data}/data/execsql2_extras/md_compare.sql +0 -0
  66. {execsql2-2.2.1.data → execsql2-2.4.0.data}/data/execsql2_extras/md_glossary.sql +0 -0
  67. {execsql2-2.2.1.data → execsql2-2.4.0.data}/data/execsql2_extras/md_upsert.sql +0 -0
  68. {execsql2-2.2.1.data → execsql2-2.4.0.data}/data/execsql2_extras/pg_compare.sql +0 -0
  69. {execsql2-2.2.1.data → execsql2-2.4.0.data}/data/execsql2_extras/pg_glossary.sql +0 -0
  70. {execsql2-2.2.1.data → execsql2-2.4.0.data}/data/execsql2_extras/pg_upsert.sql +0 -0
  71. {execsql2-2.2.1.data → execsql2-2.4.0.data}/data/execsql2_extras/script_template.sql +0 -0
  72. {execsql2-2.2.1.data → execsql2-2.4.0.data}/data/execsql2_extras/ss_compare.sql +0 -0
  73. {execsql2-2.2.1.data → execsql2-2.4.0.data}/data/execsql2_extras/ss_glossary.sql +0 -0
  74. {execsql2-2.2.1.data → execsql2-2.4.0.data}/data/execsql2_extras/ss_upsert.sql +0 -0
  75. {execsql2-2.2.1.dist-info → execsql2-2.4.0.dist-info}/WHEEL +0 -0
  76. {execsql2-2.2.1.dist-info → execsql2-2.4.0.dist-info}/entry_points.txt +0 -0
  77. {execsql2-2.2.1.dist-info → execsql2-2.4.0.dist-info}/licenses/LICENSE.txt +0 -0
  78. {execsql2-2.2.1.dist-info → execsql2-2.4.0.dist-info}/licenses/NOTICE +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: execsql2
3
- Version: 2.2.1
3
+ Version: 2.4.0
4
4
  Summary: Runs a SQL script against a PostgreSQL, SQLite, MariaDB/MySQL, DuckDB, Firebird, MS-Access, MS-SQL-Server, or Oracle database, or an ODBC DSN. Provides metacommands to import and export data, copy data between databases, conditionally execute SQL and metacommands, and dynamically alter SQL and metacommands with substitution variables.
5
5
  Project-URL: Repository, https://github.com/geocoug/execsql
6
6
  Project-URL: Issues, https://github.com/geocoug/execsql/issues
@@ -34,6 +34,7 @@ Classifier: Programming Language :: Python :: 3.10
34
34
  Classifier: Programming Language :: Python :: 3.11
35
35
  Classifier: Programming Language :: Python :: 3.12
36
36
  Classifier: Programming Language :: Python :: 3.13
37
+ Classifier: Programming Language :: Python :: 3.14
37
38
  Classifier: Topic :: Database
38
39
  Classifier: Topic :: Database :: Front-Ends
39
40
  Requires-Python: >=3.10
@@ -67,13 +68,19 @@ Requires-Dist: keyring; extra == 'auth'
67
68
  Provides-Extra: dev
68
69
  Requires-Dist: build>=1.2.2.post1; extra == 'dev'
69
70
  Requires-Dist: bump-my-version>=1.2.7; extra == 'dev'
71
+ Requires-Dist: jinja2; extra == 'dev'
70
72
  Requires-Dist: markdown-include>=0.8; extra == 'dev'
71
73
  Requires-Dist: mkdocstrings-python>=2.0.3; extra == 'dev'
74
+ Requires-Dist: odfpy; extra == 'dev'
75
+ Requires-Dist: openpyxl; extra == 'dev'
76
+ Requires-Dist: polars; extra == 'dev'
72
77
  Requires-Dist: pre-commit>=3.5.0; extra == 'dev'
73
78
  Requires-Dist: pytest-cov>=5.0.0; extra == 'dev'
74
79
  Requires-Dist: ruff>=0.4; extra == 'dev'
80
+ Requires-Dist: tables; extra == 'dev'
75
81
  Requires-Dist: tox-uv>=1.13.1; extra == 'dev'
76
82
  Requires-Dist: twine>=6.1.0; extra == 'dev'
83
+ Requires-Dist: xlrd; extra == 'dev'
77
84
  Requires-Dist: zensical>=0.0.28; extra == 'dev'
78
85
  Provides-Extra: duckdb
79
86
  Requires-Dist: duckdb; extra == 'duckdb'
@@ -0,0 +1,108 @@
1
+ execsql/__init__.py,sha256=BIny4bL8uHuSl3gXPqEkIB2FtcexlARjR7IYPwtD9bM,486
2
+ execsql/__main__.py,sha256=HdbK-SAhyUmfB6xINY5AzxdMSxGzWSGEG_2dv42Jn64,315
3
+ execsql/config.py,sha256=ipOrF8frgtN9CDg5b9J3cQB0b5RiwzoH_znNN1GrkR8,36390
4
+ execsql/constants.py,sha256=up8I1sfFg1KaQ-ZgwufDOYbupMgTkPVpHzAdWpi5-BQ,12628
5
+ execsql/exceptions.py,sha256=UE38-7HhQiwXzwKz9DgE4coTD2j6Jlam3jEB6-U-hNg,8383
6
+ execsql/format.py,sha256=4uNF2MSDBYwZuK9k4wywcUZFU4D_9bMokseOyaCjmGU,11911
7
+ execsql/models.py,sha256=kMqw5GSfb4posItCZtEX9FQRBx-BxQnUdD4_FP8rLo0,12513
8
+ execsql/parser.py,sha256=PnuGdux9iLaMwYkVy3CWFzZqBYaK7JNBEdBBoD5KvVI,12839
9
+ execsql/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10
+ execsql/state.py,sha256=INT7eXwO8_drZrngHqq2A4hN8Hrh-JFXELUVuqX4wgY,12385
11
+ execsql/types.py,sha256=8lCYX4ihkSzQJKqCYFTOVv0GDfvNrY7dcb8pAnTSR4E,29776
12
+ execsql/cli/__init__.py,sha256=rxQy5MktCksykRm9u7kqxqbTo-Rx0MCIHd3wqWufszY,14667
13
+ execsql/cli/dsn.py,sha256=_mDilt_dhjt1uwN1AC6Mbl9zmKl7pdaZA7eMgR7ZpeE,2759
14
+ execsql/cli/help.py,sha256=zSEn66LDnNEnkqgA6CEQWraIzgiwGBJSiaflRuCySXQ,5331
15
+ execsql/cli/run.py,sha256=Ex3B_gGEGgQlkBEiYz5O3qQBK4IiCj7VKTO6Bu8zny0,22469
16
+ execsql/db/__init__.py,sha256=jTbuafuKOqYtXFR1wvCOoKK5Lr3l1uErfaIbIr6UywI,1063
17
+ execsql/db/access.py,sha256=bx5qr_K51LNHVTibPqmjv7U1O2bW6DRQr8HzlzHrYIY,16520
18
+ execsql/db/base.py,sha256=jcamHa5pHsOKpoNf3E166j_eKsMxu-8QMkHkMePLwd0,30110
19
+ execsql/db/dsn.py,sha256=4YZr4yzXeaMrE-b72c8mJvi4gnllpI9v8iRrlzXKjb4,5142
20
+ execsql/db/duckdb.py,sha256=KQQzO89ajJjXqEchysn9_kKdXdWxRPi4mKp8ra6A8v4,2836
21
+ execsql/db/factory.py,sha256=fD0JlJjPn_czlW5VmjXpdSC9RB1mzLQQGQXzhdDFGYw,4970
22
+ execsql/db/firebird.py,sha256=Kgjlij7HeKXr7fymFDl05Ljzvs25uoQcI6Do3A2mSNQ,7871
23
+ execsql/db/mysql.py,sha256=n3T-MKDQrWbDjMYrjI9NgA5iykyelAX8tUrjjgV2k0M,12909
24
+ execsql/db/oracle.py,sha256=Psl9JZ0XWwHshr2xyy1vIbLf2KJ2TGRj_kTcc0YXLh4,9464
25
+ execsql/db/postgres.py,sha256=gYG1Jw8tbq06TROokoSlEfg6ZtSOXhWDYAeyS_K2Yaw,19443
26
+ execsql/db/sqlite.py,sha256=oT8MlhsaD7lmJx9ZK32wR6H9Pccr5wxs3Bk9Q3iypRI,9429
27
+ execsql/db/sqlserver.py,sha256=hSCu68Z21s2OSLow38qXwLQGxvM7IF6xjehGwgPXl9k,7092
28
+ execsql/exporters/__init__.py,sha256=a679NAJp92e3565fhfqbBIbIT_RdyWQWCJ3-wqJJyYE,525
29
+ execsql/exporters/base.py,sha256=a4jphxKnlEjXAemeNSHGelk7KvHJTghKhone75FyXAE,6242
30
+ execsql/exporters/delimited.py,sha256=UCe5oUNhymkXD-4xek2Pk1K_9Sv9ziP7o0__LMl8ZuM,29512
31
+ execsql/exporters/duckdb.py,sha256=Wc9I5uiV4MzmVQzCX-vgVHQUL7U3ZWdOkFVFWBv5SXM,2911
32
+ execsql/exporters/feather.py,sha256=w2qZAnewzeiRMnmPXECvkgD-6KtyxaiQwjokRT7Awrc,4167
33
+ execsql/exporters/html.py,sha256=ISQBOr7AJ5koKlebXSvWqzEvl1nXriCRGeKmk-bzkrc,9335
34
+ execsql/exporters/json.py,sha256=yljlRBbmvDVSTQUe0EdfdqTTRpD5sHfn7-jQ457ydvc,4139
35
+ execsql/exporters/latex.py,sha256=w_B83_5vKPe8uYxCWGdqvxwJeq0mw5zzKYDiAb7dbN0,4503
36
+ execsql/exporters/ods.py,sha256=jl2qVHUeCLLv8xrkZfG3jgXbaglQ3rggCHziv7tNQOI,18876
37
+ execsql/exporters/parquet.py,sha256=186vUTH1oVAQ0s_qayLzEQVsKKu3ijAkhYEI6tysXkg,1095
38
+ execsql/exporters/pretty.py,sha256=9isA8f6xUz-3-JhMJimibnvtybVrT1cnoAjGnzsPEGI,3423
39
+ execsql/exporters/raw.py,sha256=jNzfVqUgpKSIO7BsOVwBi4CcfCV5ooZLLq_kEXa4W_I,1918
40
+ execsql/exporters/sqlite.py,sha256=XA0ALLvy-r6Pz1lpOFkWWbvpSP9Hm1tHHiuo_BvPVDk,2686
41
+ execsql/exporters/templates.py,sha256=T9nk7vJrlxiPGfOWGc79xqqDxK3TCYu0wXq48U02npw,5564
42
+ execsql/exporters/values.py,sha256=HIyud31aux_dbCphfKHEGeZB9fkIPE5PoGXQz817XIE,2520
43
+ execsql/exporters/xls.py,sha256=QiMtWr-S8mB22ubK7F40x4r9ZyliDENOehiiVydwZpA,10259
44
+ execsql/exporters/xml.py,sha256=lqcOM8uKDoCayU42BPSLNH1_2DIHU5D3LtQItREU90c,2564
45
+ execsql/exporters/zip.py,sha256=9-hExltQorONNThiMfxPDYHqHsbTeq9zM9zmtG4oFb8,4410
46
+ execsql/gui/__init__.py,sha256=KnLB-8GuRPBZij4W-sihcA9ORRuLDYoa0p2dCeIzYRg,2001
47
+ execsql/gui/base.py,sha256=gbfCqj3nOMkAcn-GNIIAy7RdPFJ0UMbzOxpDpfoEVxk,6042
48
+ execsql/gui/console.py,sha256=Ln9ixVMLlEK5foHi0t2EywrvTiBqWoPEpp8cnof3eIw,14241
49
+ execsql/gui/desktop.py,sha256=zooMA28FWHndy9Aw242wRzchs1QxYwlGGMsWvn4-EKo,42123
50
+ execsql/gui/tui.py,sha256=n5xzwe1jAsU54jj0PpcBmVfnvfycPVOeiLx07-IfVVk,45948
51
+ execsql/importers/__init__.py,sha256=dDsxSVeQYXBvm9yGqN3QswyGbLWTwt08pvUuRJgZhl4,289
52
+ execsql/importers/base.py,sha256=bURS7dXMIDuOzSpjRaOHqaC_jvwB70sLqWVQO36AtaQ,4040
53
+ execsql/importers/csv.py,sha256=P0uMwafYoG4s1H0Yo1OysKgWWea56Sq2DZqjtjGUwUE,4696
54
+ execsql/importers/feather.py,sha256=BBYtwM77EbdXBlpdd2BEacUK1DfwLHXW9ieSGHRxIws,1770
55
+ execsql/importers/ods.py,sha256=O-bXyy_vlG4xl_KEQstYOaSAlzkGdF6TRnoHCTGpgTo,2770
56
+ execsql/importers/xls.py,sha256=wWIS8T-zxHEhK_YFl9tovCE_ByTVtUlbmVLhrrdFRb8,3602
57
+ execsql/metacommands/__init__.py,sha256=z5KtcR7qCoV0P9qyoAB1i2naXMKLqKjCa7wBNjKMrHU,8720
58
+ execsql/metacommands/conditions.py,sha256=u-XdeIWj9QMht9hRGhvH0XlB9V09AliAPKDBHRXc02s,24540
59
+ execsql/metacommands/connect.py,sha256=Nsm0D91i3RX-R2rzQQ-Br-gULaI6Uvdn9fqb7DOAVfE,14804
60
+ execsql/metacommands/control.py,sha256=FCIWD-ZivHRZDqMS-2k37iR05HKHsv_7UPh5zJAg4I4,7693
61
+ execsql/metacommands/data.py,sha256=tRQBGTAuW-eJ2tBNWaoZI9OjTyNNyHJISo7gOdL-sm8,11370
62
+ execsql/metacommands/debug.py,sha256=nmfQ2ijUbTQO3drnyV9EzFueGSTfMl-CddP_NlQyI14,8178
63
+ execsql/metacommands/dispatch.py,sha256=jsM6tArl0em-71dJSWq_rNUChJzI084JaFfDwe07BnI,76153
64
+ execsql/metacommands/io.py,sha256=ON6j_I6tmxXCvHRh0vaXWgFONLHsvt896IrgTWEwmrA,2020
65
+ execsql/metacommands/io_export.py,sha256=kxfGnoBDdPFfncxgz6dazMIoGZEHPOO-Mg02kbpdd20,15965
66
+ execsql/metacommands/io_fileops.py,sha256=RKqbWPTYiwiqCZYG-lpih0w1JVOY4RBFdWr3BJb_pnY,9669
67
+ execsql/metacommands/io_import.py,sha256=wyxJJdlW07P5ZIhweejhXyyGANAvEhY5uMjKZ200Jyc,12983
68
+ execsql/metacommands/io_write.py,sha256=NpL2aYGfBpbqmPpYsqniYltYfd_SCA1EQz3_4qSdNbo,8279
69
+ execsql/metacommands/prompt.py,sha256=xd3mAkdbn4AE4hUPuSfN5DgZGUZmk-Db23iL-JJPwXs,36918
70
+ execsql/metacommands/script_ext.py,sha256=TUgAldB2LSJAwZrCvDDi804hQ1d9BDQD2GDqHNPVOcM,2280
71
+ execsql/metacommands/system.py,sha256=sUR5kLL7idTVg8WXIMdd-Kv7nkERIiaeL0beWsz8NyY,7293
72
+ execsql/script/__init__.py,sha256=pIo0EJ7-vg67rSMbOvbri_BOUgLoGoSEUfJgxUN7ZS0,3380
73
+ execsql/script/control.py,sha256=oNfHGYui1wulZQji5_pr1qBqGfpcgxm_ESZQT00dn9Y,6095
74
+ execsql/script/engine.py,sha256=zMwMmlBBXcBLdJcORIe9NBlyepqELLwDU80j3vM7Ydg,39278
75
+ execsql/script/variables.py,sha256=zv8FkvtuINAwimJButNs7xaLT6KDukWu_LBfT9p7w4Q,11464
76
+ execsql/utils/__init__.py,sha256=0uR6JwVJQRX3vceByNBduCAf5dd5assKjeqJUWvpZoA,278
77
+ execsql/utils/auth.py,sha256=onXzNkNZQZxGC5w7eey06sjvAIAX_Lf9g7nUJtcsel0,7009
78
+ execsql/utils/crypto.py,sha256=2OnBWwn9bCBGc1ZkyRv16TvhottoCNYtXqgbE3mG3Sg,2960
79
+ execsql/utils/datetime.py,sha256=V_itd5vVvUPjT86P_z_hh4mlerMDGhDzI5MwPMDBaI4,7715
80
+ execsql/utils/errors.py,sha256=2Nxp_uivLbhgeFNuAPCiGQzE9VAdF4b1kcPClOpvme8,6380
81
+ execsql/utils/fileio.py,sha256=F6M4osE0Mb2ycTcvwwcYnhBXH1L36v6d7Oxdab6J16s,24110
82
+ execsql/utils/gui.py,sha256=kCfHvqY60jdoJa1k5HlxhrmzM4HPp7uajV6nxz3_Qh4,17583
83
+ execsql/utils/mail.py,sha256=75A1cMnEfyP0_QMMWuSLv8hrcIjc9cGBCrttLpr2TXQ,5372
84
+ execsql/utils/numeric.py,sha256=xh02ANSRk3nUpQ-rtm66ILoMqoi7HtzCoRMIOT9U8QI,1570
85
+ execsql/utils/regex.py,sha256=diEzTZqU_HHwVMadPAvN1Vgzhl7I03eVaEFGCXyGGL8,3770
86
+ execsql/utils/strings.py,sha256=5Dvzrk-9SIw2lpxXZQkiJbNyo1sy7iXXAtSULlZ0KG8,8488
87
+ execsql/utils/timer.py,sha256=eDYf5VzCNFk7oo90InJucUm3XcBdhYMogjZMqeg9xzc,1899
88
+ execsql2-2.4.0.data/data/execsql2_extras/README.md,sha256=sxwVyU0ZahCfANv56LahkyuM505kFjrMhe-1SvWE69E,4845
89
+ execsql2-2.4.0.data/data/execsql2_extras/config_settings.sqlite,sha256=aY5cxR7Q7J6zJ4bC9lu5mHUrhy211Cq3MNKPQVCt02E,20480
90
+ execsql2-2.4.0.data/data/execsql2_extras/example_config_prompt.sql,sha256=SY3Jxn1qcVm4kPW9xmmTfknHfvURXmeEYTbRjYrjGSw,7487
91
+ execsql2-2.4.0.data/data/execsql2_extras/execsql.conf,sha256=_45iJ-KWZnB8uMW_gEg067MM5pmGJ-dVl7VbAZMunAE,9530
92
+ execsql2-2.4.0.data/data/execsql2_extras/make_config_db.sql,sha256=WwyC6dK-Eh5CAVppiBCDHqiI1_wEI9U95Ytpr4lsZkg,8726
93
+ execsql2-2.4.0.data/data/execsql2_extras/md_compare.sql,sha256=B8Wd7LZ0vnMY2qvA139JIEBkPObgRH2i5xj6PejTQt8,24092
94
+ execsql2-2.4.0.data/data/execsql2_extras/md_glossary.sql,sha256=DJRHcU5NbFpxTTX-IwH3yRlsboj1q6BBGrUAHKn4Cuo,10796
95
+ execsql2-2.4.0.data/data/execsql2_extras/md_upsert.sql,sha256=v_7GbWh_N1mBTmw3gvTrkagOVp2q0KmXvM8hE-DlFxY,112524
96
+ execsql2-2.4.0.data/data/execsql2_extras/pg_compare.sql,sha256=9dWa8hnfy5dVJI-z2iGpd9JzQmI4j2ziMlEdpnr66ro,24352
97
+ execsql2-2.4.0.data/data/execsql2_extras/pg_glossary.sql,sha256=pKjIIDsROAgJq2H-1qNEcRMAWManivcZ_AEVHzUUlic,9908
98
+ execsql2-2.4.0.data/data/execsql2_extras/pg_upsert.sql,sha256=k7AFiGTLBy3nf-qO5QIaZrEYTAKvdxxU3JDLx9jqkzs,108315
99
+ execsql2-2.4.0.data/data/execsql2_extras/script_template.sql,sha256=1Estacb_vm1FgK41k_G9nuduP1yiA-fQ1Kn4Z4mv5Ao,11153
100
+ execsql2-2.4.0.data/data/execsql2_extras/ss_compare.sql,sha256=TsVxWm3cEpR5-EiMYXNhtaY0arSNeKZhsJdHdLA7xeI,24833
101
+ execsql2-2.4.0.data/data/execsql2_extras/ss_glossary.sql,sha256=cLM7nN8JOIu9ZVP9oY9qdSK3hrnWJiDcX6nZmQQbQWI,13065
102
+ execsql2-2.4.0.data/data/execsql2_extras/ss_upsert.sql,sha256=BCqmBykXBF-BpCgOFeG1qhf2XfScKsxPD17wd1hYfHw,120647
103
+ execsql2-2.4.0.dist-info/METADATA,sha256=GZb9PGPvtiIATG_F_8a1QzeuH49j3aro92xDioQtbds,15168
104
+ execsql2-2.4.0.dist-info/WHEEL,sha256=QccIxa26bgl1E6uMy58deGWi-0aeIkkangHcxk2kWfw,87
105
+ execsql2-2.4.0.dist-info/entry_points.txt,sha256=sUOxkM-dN1eBGGpSpDLsAaE0yNXYQKWZAfxPOlMkQyk,90
106
+ execsql2-2.4.0.dist-info/licenses/LICENSE.txt,sha256=LBdhuxejF8_bLCHZ2kWfmDXpDGUu914Gbd6_3JjCRe0,676
107
+ execsql2-2.4.0.dist-info/licenses/NOTICE,sha256=sqVrM73Ys9zfvWC_P797lHfTnoPW_ETeBSrUTFaob0A,339
108
+ execsql2-2.4.0.dist-info/RECORD,,
@@ -1,127 +0,0 @@
1
- Templates for execsql.py
2
- ===================================================
3
-
4
- Several types of templates are provided that may be useful in conjunction with execsql.py. These are:
5
-
6
- *execsql.conf*
7
- An annotated version of the configuration file that includes all configuration settings
8
- and notes on their usage.
9
-
10
- *script_template.sql*
11
- A framework for SQL scripts that make use of several execsql features. It includes sections
12
- for custom configuration settings, custom logfile creation, and reporting of unexpected
13
- script exits (through user cancellation or errors).
14
-
15
- *config_settings.sqlite* and *example_config_prompt.sql*
16
- A SQLite database containing specifications for all settings configurable with the CONFIG
17
- metacommand, in the form used by the PROMPT ENTRY_FORM metacommand, and a SQL script
18
- illustrating how this database can be used to prompt the user for some or all of the
19
- configuration settings. *execsql* version 1.63.0 or later is needed to use this script.
20
-
21
-
22
- Functional Scripts for execsql.py
23
- =================================================
24
-
25
- These script files provide useful functionality that should be accessed by including these
26
- scripts in other SQL scripts and then calling the sub-scripts that they contain.
27
-
28
- Upsert Scripts
29
- ------------------------------------------------
30
-
31
- These scripts perform automated upsert operations on any tables of
32
- any database in a DBMS that supports the standard
33
- *information_schema* views. Currently that includes:
34
-
35
- * PostgreSQL: pg_upsert.sql;
36
-
37
- * MySQL/MariaDB: md_upsert.sql; and
38
-
39
- * SQL Server: ss_upsert.sql.
40
-
41
- These scripts perform the upsert operation by using standard SQL
42
- UPDATE and INSERT statements rather than DBMS-specific implementations
43
- of the SQL MERGE statement.
44
-
45
- Features of these upsert scripts include:
46
-
47
- * They can be applied to any table in any database without modification.
48
-
49
- * They can be applied to multiple tables simultaneously, and will
50
- perform the upsert operations in top-down order to maintain
51
- referential integrity among tables.
52
-
53
- * Prior to performing the upsert operation, they check for null
54
- values in the columns of each staging table that must be non-null in the
55
- corresponding base table.
56
-
57
- * Prior to performing the upsert operation, they check for duplicate
58
- primary key values in the staging tables.
59
-
60
- * Prior to performing the upsert operation, they check foreign keys
61
- against both base tables and any other appropriate staging tables.
62
-
63
- * They will not attempt to perform the upsert operation on any
64
- table if there are any violations of the non-null
65
- checks, primary key checks, or foreign key checks.
66
-
67
- * They produce a table that either a) summarizes the number of
68
- rows that violated each type of non-null and foreign-key check,
69
- or b) summarizes the number of rows updated and the number of
70
- rows inserted for each table.
71
-
72
- * Optionally, they will display all the changes to be made in a
73
- GUI interface, prompting the user to approve each update and
74
- insert operation.
75
-
76
- * Optionally, they will record all operations carried out in a
77
- custom log file; this log may include the SQL statements executed
78
- and the data values that were added or changed.
79
-
80
- * If an execsql console is active, they will use the console's
81
- status bar and progress bar to indicate the activity underway.
82
-
83
-
84
- Complete documentation is available at
85
- `Read The Docs (execsql-upsert) <https://execsql-upsert.readthedocs.io/en/latest/>`_.
86
-
87
-
88
- Table Comparison Scripts
89
- ----------------------------------------------------------
90
-
91
- These scripts generate SQL that can be used to identify differences
92
- in the content of two tables with equivalent structure. These are
93
- specifically intended to be base and staging tables. Running the
94
- SQL provided by these scripts will provide different summaries of
95
- the types of changes that would be made to the base tables by
96
- upserting the staging tables.
97
-
98
- These scripts work with
99
- any tables of any database in a DBMS that supports the standard
100
- *information_schema* views. Currently that includes:
101
-
102
- * PostgreSQL: pg_compare.sql;
103
-
104
- * MySQL/MariaDB: md_compare.sql; and
105
-
106
- * SQL Server: ss_compare.sql.
107
-
108
- Complete documentation is available at
109
- `Read The Docs (execsql-compare) <https://execsql-compare.readthedocs.io/en/latest/>`_.
110
-
111
-
112
- Glossary Creation Scripts
113
- ------------------------------------------------------------
114
-
115
- These scripts create a glossary of column names or other terms
116
- that can be exported to accompany a data summary. These scripts work with
117
- any tables of any database in a DBMS that supports the standard
118
- *information_schema* views. Currently that includes:
119
-
120
- * PostgreSQL: pg_glossary.sql;
121
-
122
- * MySQL/MariaDB: md_glossary.sql; and
123
-
124
- * SQL Server: ss_glossary.sql.
125
-
126
- Complete documentation is available at
127
- `Read The Docs (execsql-glossary) <https://execsql-compare.readthedocs.io/en/latest/>`_.
@@ -1,104 +0,0 @@
1
- execsql/__init__.py,sha256=BIny4bL8uHuSl3gXPqEkIB2FtcexlARjR7IYPwtD9bM,486
2
- execsql/__main__.py,sha256=HdbK-SAhyUmfB6xINY5AzxdMSxGzWSGEG_2dv42Jn64,315
3
- execsql/config.py,sha256=X8MuO3FhDtSfKwdVDdNrHd-htiia8Jty3TSTvMLTHBk,34048
4
- execsql/constants.py,sha256=up8I1sfFg1KaQ-ZgwufDOYbupMgTkPVpHzAdWpi5-BQ,12628
5
- execsql/exceptions.py,sha256=SH71rOUBvg_ITvfl6xgRsxlJzLLYXWpD4ntFYjmqDlE,8039
6
- execsql/format.py,sha256=4uNF2MSDBYwZuK9k4wywcUZFU4D_9bMokseOyaCjmGU,11911
7
- execsql/models.py,sha256=INArNIF_lds_Jv3aXXXFO8Cf1W7G_IjsZDLsVnDlSCs,12427
8
- execsql/parser.py,sha256=kue_NonM_VLAnfYDqJ_7mXJSfKsTLFLJBOj9pRWACJ0,12689
9
- execsql/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10
- execsql/script.py,sha256=weMYQFMR_Au9Xz32YYxOEqdD3SLj_BMRmfa_Me-Q81M,48418
11
- execsql/state.py,sha256=INT7eXwO8_drZrngHqq2A4hN8Hrh-JFXELUVuqX4wgY,12385
12
- execsql/types.py,sha256=N4DiNYrs2BuI_IIIdepo-VHcPr6hbQjavpYRGzvXqoU,29307
13
- execsql/cli/__init__.py,sha256=rxQy5MktCksykRm9u7kqxqbTo-Rx0MCIHd3wqWufszY,14667
14
- execsql/cli/dsn.py,sha256=_mDilt_dhjt1uwN1AC6Mbl9zmKl7pdaZA7eMgR7ZpeE,2759
15
- execsql/cli/help.py,sha256=zSEn66LDnNEnkqgA6CEQWraIzgiwGBJSiaflRuCySXQ,5331
16
- execsql/cli/run.py,sha256=Ex3B_gGEGgQlkBEiYz5O3qQBK4IiCj7VKTO6Bu8zny0,22469
17
- execsql/db/__init__.py,sha256=jTbuafuKOqYtXFR1wvCOoKK5Lr3l1uErfaIbIr6UywI,1063
18
- execsql/db/access.py,sha256=rl9z-w5SYTv9FAhAGTU7TY_P2m9k5fv6_sDHNX5QFe0,16228
19
- execsql/db/base.py,sha256=MqggHYPaV8aNuOhsS9jzckvIc9TJqts9yhHvKS5Usug,26612
20
- execsql/db/dsn.py,sha256=R-cLMzitDsVVz099Lp3ls2t6uGl9p2ivUimORZ6s0gw,5012
21
- execsql/db/duckdb.py,sha256=lalqeaPN0Z3amVwjc3pJqXvwOEN8v3sIF1Q2kr0zLPI,2733
22
- execsql/db/factory.py,sha256=O8YDNRWBFNcsfN6pnlFb3vuTH3rklfzlpQbAFcMnpGg,4150
23
- execsql/db/firebird.py,sha256=dmAa_ORCwdY5F0nX57NvXS55rQ9dPUTpBfHkXm9yl8M,7770
24
- execsql/db/mysql.py,sha256=W7BchogZ7VyqFnCYKvyPQACezaI7h8LPk8QvuqaVnCQ,12816
25
- execsql/db/oracle.py,sha256=BZhSkXG_1RfC5dSktXSOr62XJfRSjlRYBCbnvpgLz-8,9362
26
- execsql/db/postgres.py,sha256=1px6neapeB8DQqYsaRf_YF8sAtLLZlHxlWPBQcZ-xJw,19309
27
- execsql/db/sqlite.py,sha256=yphiggqhoX89ClyV3uCwp12IP8UcRYkTLnPqIwOpE9I,9324
28
- execsql/db/sqlserver.py,sha256=Q9kh2-2HIzfo2CYiwRYrgoOD2yE_VPvMMJNHC9CxU_c,6781
29
- execsql/exporters/__init__.py,sha256=a679NAJp92e3565fhfqbBIbIT_RdyWQWCJ3-wqJJyYE,525
30
- execsql/exporters/base.py,sha256=YzMzkCKMDpVxknHSSwZYx1QV9rYmWyAK0o-CSLwnVBM,5864
31
- execsql/exporters/delimited.py,sha256=9dvygIzmsv71cllaPRtPH_T4LhImEf1d3EOPmjYjUyg,27202
32
- execsql/exporters/duckdb.py,sha256=bmjiT13y6aNf4EvGFZIzHZb5ceSZPu-V22FlyTXBz5U,2689
33
- execsql/exporters/feather.py,sha256=jXEwh-_pdeMXf-gy9SO496ovVhgwTDERLmUOgkUJARs,3934
34
- execsql/exporters/html.py,sha256=bINhyrxu_0IyDJJfkxRV8FT7LYUbtmS3iyaEWbZWA10,8885
35
- execsql/exporters/json.py,sha256=HNpNF7p20rXApSJHcu3awEDg4mPs6waVy23qCrbfLN0,3947
36
- execsql/exporters/latex.py,sha256=vD0V3gqBcFYeQ2WazdDeHWYRQGWY4Y3hFdFff4pGxYQ,4283
37
- execsql/exporters/ods.py,sha256=l9sPCElV2Cn6M3AxK6KZThx5YD5RIHaD7YmOTnJN-7I,17088
38
- execsql/exporters/parquet.py,sha256=Lkbu3TU9MtBGp2sBFENSsYKrR_i9HwNahVMqbn2HVc8,988
39
- execsql/exporters/pretty.py,sha256=o37Xiu2_m33VR8tExu-Vpq_E0MIwkhmX-VBE6z0QL68,3184
40
- execsql/exporters/raw.py,sha256=LpUnaNBqArFNrwM0XROo0vur6QXXhLyvyFVhmDtLZ10,1695
41
- execsql/exporters/sqlite.py,sha256=oKB7zsVm745Hr8-tBabEiOSbn6NZ9rqzu8eEkkmXsi8,2442
42
- execsql/exporters/templates.py,sha256=42YFIqxLsdUcbKwR_38pFxfPC4kiLV2jvGvugNf-JUQ,4858
43
- execsql/exporters/values.py,sha256=I299loqtObmqM6-lgowmQKpVKhoEDAQKSyYgkvCHff4,2282
44
- execsql/exporters/xls.py,sha256=M4jF1vGYpPEDWF0wvFlJUXtCuqTDrUIjwiYMYOMsY7A,9063
45
- execsql/exporters/xml.py,sha256=Ji-fbpBN6ikot1E6513pkeU03RY_eACGzU9-Xc4ORes,2447
46
- execsql/exporters/zip.py,sha256=Ujp4gD3vfqy8Cq2b1iLFhfDdjcGdibawrxnSoNtCjS8,3463
47
- execsql/gui/__init__.py,sha256=KnLB-8GuRPBZij4W-sihcA9ORRuLDYoa0p2dCeIzYRg,2001
48
- execsql/gui/base.py,sha256=gbfCqj3nOMkAcn-GNIIAy7RdPFJ0UMbzOxpDpfoEVxk,6042
49
- execsql/gui/console.py,sha256=Ln9ixVMLlEK5foHi0t2EywrvTiBqWoPEpp8cnof3eIw,14241
50
- execsql/gui/desktop.py,sha256=zooMA28FWHndy9Aw242wRzchs1QxYwlGGMsWvn4-EKo,42123
51
- execsql/gui/tui.py,sha256=n5xzwe1jAsU54jj0PpcBmVfnvfycPVOeiLx07-IfVVk,45948
52
- execsql/importers/__init__.py,sha256=dDsxSVeQYXBvm9yGqN3QswyGbLWTwt08pvUuRJgZhl4,289
53
- execsql/importers/base.py,sha256=UsQqVj_ETLTuMQrdjxgMaT-HJaln8ZPN8aNHOaXdN9A,4007
54
- execsql/importers/csv.py,sha256=2M5ubw6LRAxHap7UXS9ZEa0qSAL-KD_d4oFO9twLFFo,4655
55
- execsql/importers/feather.py,sha256=yvK001uN1EveET0pnS7B4clzCuauYPCS5oB4a_7Agu0,1722
56
- execsql/importers/ods.py,sha256=amJqKdN2H-LaFMHo0m0tMiHMDjm64pRkfXBDswJU0aA,2733
57
- execsql/importers/xls.py,sha256=yFPSu_5rmeRjLfBDVMLJ1pDs9_JfUEnVPAsJANngHCM,3565
58
- execsql/metacommands/__init__.py,sha256=ebmM3aDwfqg2jzxSSLguuPRfxKqYvcAD6jVFjML87kM,77556
59
- execsql/metacommands/conditions.py,sha256=u-XdeIWj9QMht9hRGhvH0XlB9V09AliAPKDBHRXc02s,24540
60
- execsql/metacommands/connect.py,sha256=Nsm0D91i3RX-R2rzQQ-Br-gULaI6Uvdn9fqb7DOAVfE,14804
61
- execsql/metacommands/control.py,sha256=FCIWD-ZivHRZDqMS-2k37iR05HKHsv_7UPh5zJAg4I4,7693
62
- execsql/metacommands/data.py,sha256=tRQBGTAuW-eJ2tBNWaoZI9OjTyNNyHJISo7gOdL-sm8,11370
63
- execsql/metacommands/debug.py,sha256=nmfQ2ijUbTQO3drnyV9EzFueGSTfMl-CddP_NlQyI14,8178
64
- execsql/metacommands/io.py,sha256=ON6j_I6tmxXCvHRh0vaXWgFONLHsvt896IrgTWEwmrA,2020
65
- execsql/metacommands/io_export.py,sha256=kxfGnoBDdPFfncxgz6dazMIoGZEHPOO-Mg02kbpdd20,15965
66
- execsql/metacommands/io_fileops.py,sha256=RKqbWPTYiwiqCZYG-lpih0w1JVOY4RBFdWr3BJb_pnY,9669
67
- execsql/metacommands/io_import.py,sha256=wyxJJdlW07P5ZIhweejhXyyGANAvEhY5uMjKZ200Jyc,12983
68
- execsql/metacommands/io_write.py,sha256=NpL2aYGfBpbqmPpYsqniYltYfd_SCA1EQz3_4qSdNbo,8279
69
- execsql/metacommands/prompt.py,sha256=xd3mAkdbn4AE4hUPuSfN5DgZGUZmk-Db23iL-JJPwXs,36918
70
- execsql/metacommands/script_ext.py,sha256=TUgAldB2LSJAwZrCvDDi804hQ1d9BDQD2GDqHNPVOcM,2280
71
- execsql/metacommands/system.py,sha256=sUR5kLL7idTVg8WXIMdd-Kv7nkERIiaeL0beWsz8NyY,7293
72
- execsql/utils/__init__.py,sha256=0uR6JwVJQRX3vceByNBduCAf5dd5assKjeqJUWvpZoA,278
73
- execsql/utils/auth.py,sha256=AVAKsLN4qBlfO8Axz4rmav4IujdM50RgPFZeidGmYqI,6931
74
- execsql/utils/crypto.py,sha256=RRbrmbwq0NoNWUH4ZjzsI1H42um3d7Ftfoap9Fp0Nl4,3033
75
- execsql/utils/datetime.py,sha256=WNnU5xXJWKN1dEeeaEX8GzOK0wqDuLwnaVnU7LKT0RI,7666
76
- execsql/utils/errors.py,sha256=1beWINMdvE0HUJamIlToKOdDZEmIdsIxtfUMTv6l_Ko,6210
77
- execsql/utils/fileio.py,sha256=O51pkc9Bf7uh3j2fud_Ycf7bX3vRJPhGKyMf8s46E9o,23739
78
- execsql/utils/gui.py,sha256=LS2Z8sSwW65QGYHHQBApVDaLaPdB6Eq8aTNn71cPimE,16668
79
- execsql/utils/mail.py,sha256=Z1t0agMd6zQbB0fJM3aejmpVYTi6PbsPDchqT8pKay0,5628
80
- execsql/utils/numeric.py,sha256=n9DSZOTJ2gAjUY_S6JZVxpAZ71SKDEFiLwdbE7haymw,1524
81
- execsql/utils/regex.py,sha256=B6XXlaGAznKarrrrowLcjZ52PbkwAWmZzWz1FlRrUZM,3632
82
- execsql/utils/strings.py,sha256=YSaPlax1b_EEL3VZAAP508AL2UomCEOYuhriX_pG7Kc,8230
83
- execsql/utils/timer.py,sha256=1oqmmMU7w0L7zgo_3n7b_7rpoHt0H081zCPFYwrWBlo,1862
84
- execsql2-2.2.1.data/data/execsql2_extras/READ_ME.rst,sha256=xrseluXaBIw0mec1J5rcNVKIgOqHRCJcbGrCsAay7UI,4848
85
- execsql2-2.2.1.data/data/execsql2_extras/config_settings.sqlite,sha256=aY5cxR7Q7J6zJ4bC9lu5mHUrhy211Cq3MNKPQVCt02E,20480
86
- execsql2-2.2.1.data/data/execsql2_extras/example_config_prompt.sql,sha256=SY3Jxn1qcVm4kPW9xmmTfknHfvURXmeEYTbRjYrjGSw,7487
87
- execsql2-2.2.1.data/data/execsql2_extras/execsql.conf,sha256=l0DI9CEZhNAqknjNYzYr5GzGtO3NTO4WwlVUJgj3n7M,9515
88
- execsql2-2.2.1.data/data/execsql2_extras/make_config_db.sql,sha256=WwyC6dK-Eh5CAVppiBCDHqiI1_wEI9U95Ytpr4lsZkg,8726
89
- execsql2-2.2.1.data/data/execsql2_extras/md_compare.sql,sha256=B8Wd7LZ0vnMY2qvA139JIEBkPObgRH2i5xj6PejTQt8,24092
90
- execsql2-2.2.1.data/data/execsql2_extras/md_glossary.sql,sha256=DJRHcU5NbFpxTTX-IwH3yRlsboj1q6BBGrUAHKn4Cuo,10796
91
- execsql2-2.2.1.data/data/execsql2_extras/md_upsert.sql,sha256=v_7GbWh_N1mBTmw3gvTrkagOVp2q0KmXvM8hE-DlFxY,112524
92
- execsql2-2.2.1.data/data/execsql2_extras/pg_compare.sql,sha256=9dWa8hnfy5dVJI-z2iGpd9JzQmI4j2ziMlEdpnr66ro,24352
93
- execsql2-2.2.1.data/data/execsql2_extras/pg_glossary.sql,sha256=pKjIIDsROAgJq2H-1qNEcRMAWManivcZ_AEVHzUUlic,9908
94
- execsql2-2.2.1.data/data/execsql2_extras/pg_upsert.sql,sha256=k7AFiGTLBy3nf-qO5QIaZrEYTAKvdxxU3JDLx9jqkzs,108315
95
- execsql2-2.2.1.data/data/execsql2_extras/script_template.sql,sha256=1Estacb_vm1FgK41k_G9nuduP1yiA-fQ1Kn4Z4mv5Ao,11153
96
- execsql2-2.2.1.data/data/execsql2_extras/ss_compare.sql,sha256=TsVxWm3cEpR5-EiMYXNhtaY0arSNeKZhsJdHdLA7xeI,24833
97
- execsql2-2.2.1.data/data/execsql2_extras/ss_glossary.sql,sha256=cLM7nN8JOIu9ZVP9oY9qdSK3hrnWJiDcX6nZmQQbQWI,13065
98
- execsql2-2.2.1.data/data/execsql2_extras/ss_upsert.sql,sha256=BCqmBykXBF-BpCgOFeG1qhf2XfScKsxPD17wd1hYfHw,120647
99
- execsql2-2.2.1.dist-info/METADATA,sha256=OX_RjzGB5kYi3tnP-yDlnclymVdwJlQiqFyMkpH7MXU,14890
100
- execsql2-2.2.1.dist-info/WHEEL,sha256=QccIxa26bgl1E6uMy58deGWi-0aeIkkangHcxk2kWfw,87
101
- execsql2-2.2.1.dist-info/entry_points.txt,sha256=sUOxkM-dN1eBGGpSpDLsAaE0yNXYQKWZAfxPOlMkQyk,90
102
- execsql2-2.2.1.dist-info/licenses/LICENSE.txt,sha256=LBdhuxejF8_bLCHZ2kWfmDXpDGUu914Gbd6_3JjCRe0,676
103
- execsql2-2.2.1.dist-info/licenses/NOTICE,sha256=sqVrM73Ys9zfvWC_P797lHfTnoPW_ETeBSrUTFaob0A,339
104
- execsql2-2.2.1.dist-info/RECORD,,