manage-sql 0.7.0.dev9293__tar.gz → 0.7.1.dev1015__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.
Files changed (23) hide show
  1. manage_sql-0.7.1.dev1015/PKG-INFO +441 -0
  2. manage_sql-0.7.1.dev1015/README.md +418 -0
  3. {manage_sql-0.7.0.dev9293 → manage_sql-0.7.1.dev1015}/manage_sql/Utils/MYSQL.py +111 -7
  4. {manage_sql-0.7.0.dev9293 → manage_sql-0.7.1.dev1015}/manage_sql/Utils/POSTGRESQL.py +166 -4
  5. manage_sql-0.7.1.dev1015/manage_sql/Utils/SQLITE.py +424 -0
  6. {manage_sql-0.7.0.dev9293 → manage_sql-0.7.1.dev1015}/manage_sql/Utils/utils_mysql.py +166 -3
  7. {manage_sql-0.7.0.dev9293 → manage_sql-0.7.1.dev1015}/manage_sql/Utils/utils_postgres.py +54 -2
  8. {manage_sql-0.7.0.dev9293 → manage_sql-0.7.1.dev1015}/manage_sql/Utils/utils_sqlite.py +92 -3
  9. manage_sql-0.7.1.dev1015/manage_sql/__init__.py +3 -0
  10. manage_sql-0.7.1.dev1015/manage_sql.egg-info/PKG-INFO +441 -0
  11. {manage_sql-0.7.0.dev9293 → manage_sql-0.7.1.dev1015}/setup.py +2 -2
  12. manage_sql-0.7.0.dev9293/PKG-INFO +0 -666
  13. manage_sql-0.7.0.dev9293/README.md +0 -643
  14. manage_sql-0.7.0.dev9293/manage_sql/Utils/SQLITE.py +0 -232
  15. manage_sql-0.7.0.dev9293/manage_sql/__init__.py +0 -3
  16. manage_sql-0.7.0.dev9293/manage_sql.egg-info/PKG-INFO +0 -666
  17. {manage_sql-0.7.0.dev9293 → manage_sql-0.7.1.dev1015}/LICENCE +0 -0
  18. {manage_sql-0.7.0.dev9293 → manage_sql-0.7.1.dev1015}/manage_sql/Utils/__init__.py +0 -0
  19. {manage_sql-0.7.0.dev9293 → manage_sql-0.7.1.dev1015}/manage_sql.egg-info/SOURCES.txt +0 -0
  20. {manage_sql-0.7.0.dev9293 → manage_sql-0.7.1.dev1015}/manage_sql.egg-info/dependency_links.txt +0 -0
  21. {manage_sql-0.7.0.dev9293 → manage_sql-0.7.1.dev1015}/manage_sql.egg-info/requires.txt +0 -0
  22. {manage_sql-0.7.0.dev9293 → manage_sql-0.7.1.dev1015}/manage_sql.egg-info/top_level.txt +0 -0
  23. {manage_sql-0.7.0.dev9293 → manage_sql-0.7.1.dev1015}/setup.cfg +0 -0
@@ -0,0 +1,441 @@
1
+ Metadata-Version: 2.1
2
+ Name: manage-sql
3
+ Version: 0.7.1.dev1015
4
+ Summary: Python library for managing SQLite, MySQL, and PostgreSQL databases with greater efficiency.
5
+ Home-page: https://github.com/webtechmoz/manage-sql.git
6
+ Author: Web Tech Moz
7
+ Author-email: zoidycine@gmail.com
8
+ License: MIT
9
+ Keywords: manage-sql,sqlite,sqlite manager,mysql,mysql manager,mysql python,mysql connector,postgresql connector,postgresql,postgresql python
10
+ Classifier: Programming Language :: Python :: 3.12
11
+ Classifier: Programming Language :: Python :: 3.11
12
+ Classifier: Programming Language :: Python :: 3.10
13
+ Classifier: Programming Language :: Python :: 3.7
14
+ Classifier: Programming Language :: Python :: 3.6
15
+ Classifier: License :: OSI Approved :: MIT License
16
+ Classifier: Operating System :: OS Independent
17
+ Requires-Python: >=3.6
18
+ Description-Content-Type: text/markdown
19
+ License-File: LICENCE
20
+ Requires-Dist: mysql-connector
21
+ Requires-Dist: mysql-connector-python
22
+ Requires-Dist: psycopg2-binary
23
+
24
+ # MANAGE-SQL DOCUMENTATION
25
+
26
+ A classe **manage-sql** foi feita de modo a facilitar a gestão e interação com bancos de dados sqlite.
27
+
28
+ ## Funcionalidades
29
+ - Criação e gestão de bancos de dados sqlite, mysql e postegres.
30
+ - Definição de estruturas de tabelas usando tipos de colunas customizadas.
31
+ - Maior performance nas operações CRUD.
32
+ - Executar operações sql brutas sem depender da classe
33
+ - Método próprio para encriptar valores sensíveis como senhas.
34
+
35
+ ## Instalação
36
+ Primeiro garanta que tem o python instalando. Caso não tenha o python, [clique aqui](https://www.python.org/downloads/)
37
+
38
+ Segundo, instale a biblioteca manage-sql usando o comando abaixo na linha de comandos
39
+
40
+ ```bash
41
+ pip install manage.sql
42
+ ```
43
+
44
+ ## Métodos
45
+
46
+ Para fazer a gestão dos bancos de dados, ao importar pode fazer o *import* dependendo do tipo de banco que pretende gerir.
47
+
48
+ ```python
49
+ from manage_sql import SQLITE
50
+ from manage_sql import MYSQL
51
+ from manage_sql import POSTEGRESQL
52
+ ```
53
+
54
+ ### Conectando com o banco
55
+ #### SQLITE
56
+ ```python
57
+ from manage_sql import SQLITE
58
+
59
+ db = SQLITE(
60
+ database = 'my_database',
61
+ path = 'path_database'
62
+ )
63
+ ```
64
+ **Parametros**
65
+ - `database`: *str* (opcional) - nome do banco de dados sqlite
66
+ - `path`: *str* (opcional) - local onde pretender colocar o banco de dados. Caso não defina, o caminho padrão será o */database*
67
+
68
+ ***
69
+
70
+ #### MYSQL
71
+ ```python
72
+ from manage_sql import MYSQL
73
+
74
+ db = MYSQL(
75
+ host = 'localhost',
76
+ username = 'mysql_user',
77
+ password = 'user_password',
78
+ database = 'database_name',
79
+ port = 3306
80
+ )
81
+ ```
82
+
83
+ **Parametros**
84
+ - `host`: *str* - local onde está a rodar o servidor mysql
85
+ - `username`: *str* - usuario do banco de dados
86
+ - `password`: *str* - palavra-passe do usuario mysql
87
+ - `database`: *str* (opcional) - nome do banco de dados mysql
88
+ - `port`: *int* (opcional) - a porta padrão do servidor mysql é o **3306**
89
+
90
+ ***
91
+
92
+ #### POSTGRESQL
93
+ - **Conectar usando o postegres_url (dsn)**
94
+ ```python
95
+ from manage_sql import POSTEGRESQL
96
+
97
+ db = POSTEGRESQL(
98
+ postegres_url = 'postegres_url',
99
+ )
100
+ ```
101
+
102
+ - **Conectar usando os parametros normais**
103
+ ```python
104
+ from manage_sql import POSTEGRESQL
105
+
106
+ db = POSTEGRESQL(
107
+ host = 'localhost',
108
+ username = 'postgres_user',
109
+ password = 'user_password',
110
+ database = 'database_name',
111
+ port = 5432
112
+ )
113
+ ```
114
+
115
+ **Parametros**
116
+ - `portegres_url`: *str* - caminho para o servidor onde está alocado o banco de dados postegres. Mais detalhes consulte [clique aqui](https://www.psycopg.org/docs/connection.html#connection.dsn)
117
+ - `host`: *str* - local onde está a rodar o servidor postgres
118
+ - `username`: *str* - usuario do banco de dados
119
+ - `password`: *str* - palavra-passe do usuario postgres
120
+ - `database`: *str* (opcional) - nome do banco de dados postgres
121
+ - `port`: *int* (opcional) - a porta padrão do servidor postgres é **5432**
122
+
123
+ ***
124
+ *Os métodos abaixo aplicam-se para os três bancos de dados (mysql, sqlite, postegresql). A título de exemplo a documentação tomará como base, o banco de dados **MYSQL***
125
+ ***
126
+
127
+ ### Criar Tabela
128
+ ```python
129
+ from manage_sql import MYSQL
130
+
131
+ db = MYSQL(
132
+ host='localhost',
133
+ username='root',
134
+ password='Alex756545!',
135
+ database='usuarios'
136
+ )
137
+
138
+ db.create_table(
139
+ tablename='usuarios',
140
+ columns=[
141
+ db.Column(
142
+ name='nome',
143
+ column_type=db.column_types.Char(60).varchar
144
+ ),
145
+ db.Column(
146
+ name='username',
147
+ column_type=db.column_types.Char(60).varchar
148
+ )
149
+ ]
150
+ )
151
+ ```
152
+
153
+ **Parametros**
154
+ - `tablename`: *str* - nome da tabela que pretende criar no banco de dados especificado na conexão
155
+ - `columns`: *list[Column]* - lista de colunas que pretende criar dentro da tabela.
156
+
157
+ **Nota 1:** A documentação devida do `Column` será feita em breve.
158
+ **Nota 2:** Tenha atenção aos tipos do `column_types`, dado que cada tipo de banco de dados possui seus respectivos tipos.
159
+
160
+ ***
161
+
162
+ ### Inserir Dados
163
+ ```python
164
+ from manage_sql import MYSQL
165
+
166
+ db = MYSQL(
167
+ host='localhost',
168
+ username='root',
169
+ password='Alex756545!',
170
+ database='usuarios'
171
+ )
172
+
173
+ db.insert_data(
174
+ tablename='usuarios',
175
+ insert_query=[
176
+ db.ColumnData(
177
+ column='nome',
178
+ value='Web Tech Moz'
179
+ ),
180
+ db.ColumnData(
181
+ column='nome',
182
+ value='webtechmoz'
183
+ )
184
+ ]
185
+ )
186
+ ```
187
+
188
+ **Parametros**
189
+ - `tablename`: str - nome da tabela que pretende inserir os dados
190
+ - `insert_query`: *list[ColumnData]* - lista de ColumnData abaixo descritos
191
+ - `ColumnData`: ColumnDate - instância para inserir os dados nas colunas da tabela. Recebe `column` que corresponde ao nome da coluna e `value` correspondente ao valor a inserir
192
+
193
+ ***
194
+
195
+ ### Apagar Dados
196
+ ```python
197
+ from manage_sql import MYSQL
198
+
199
+ db = MYSQL(
200
+ host='localhost',
201
+ username='root',
202
+ password='Alex756545!',
203
+ database='usuarios'
204
+ )
205
+
206
+ db.detele_data(
207
+ tablename='usuarios',
208
+ condition=db.delete_by(
209
+ column='id'
210
+ ).EQUAL(
211
+ value=1
212
+ )
213
+ )
214
+ ```
215
+
216
+ **Parametros**
217
+ - `tablename`: *str* - nome da tabela que pretende inserir os dados
218
+ - `condition`: *Filter* (opcional) - método de filtragem que permite selecionar o(s) dado(s) que pretende apagar.
219
+
220
+ **Parametros de Filtragem**
221
+ O `delete_by` deve receber uma coluna base para fazer a filtragem dos dados. Este método possui várioss metodos de filtragem abaixo indicados:
222
+ - `EQUAL`: recebe um valor em que a coluna especificada deverá ser igual `=`
223
+ - `GATHER_THAN`: recebe um valor minimo para comparação `>`
224
+ - `GATHER_OR_EQUAL`: recebe um valor que deverá ser o mínimo incluido para comparação `>=`
225
+ - `LESS_THAN`: recebe um valor máximo para comparação `<`
226
+ - `LESS_OR_EQUAL`: recebe um valor máximo incluido `<=`
227
+ - `CONTAIN`: recebe uma parte de texto para validação de strings `LIKE`
228
+
229
+ Pode tambem fazer filtragem em multiplas colunas usando as condicionais abaixo:
230
+
231
+ - **`OR`** e **`AND`**
232
+ ```python
233
+ from manage_sql import MYSQL
234
+
235
+ db = MYSQL(
236
+ host='localhost',
237
+ username='root',
238
+ password='Alex756545!',
239
+ database='usuarios'
240
+ )
241
+
242
+ # Filtrando usando o OR
243
+ db.detele_data(
244
+ tablename='usuarios',
245
+ condition=db.delete_by(
246
+ column='id'
247
+ ).EQUAL(
248
+ value=1
249
+ ).OR.filterby(
250
+ column='username'
251
+ ).CONTAIN(
252
+ value='moz'
253
+ )
254
+ )
255
+
256
+ # Filtrando usando o AND
257
+ db.detele_data(
258
+ tablename='usuarios',
259
+ condition=db.delete_by(
260
+ column='id'
261
+ ).EQUAL(
262
+ value=1
263
+ ).AND.filterby(
264
+ column='username'
265
+ ).CONTAIN(
266
+ value='moz'
267
+ )
268
+ )
269
+ ```
270
+ ***
271
+
272
+ ### Ver os Dados
273
+ ```python
274
+ from manage_sql import MYSQL
275
+
276
+ db = MYSQL(
277
+ host='localhost',
278
+ username='root',
279
+ password='Alex756545!',
280
+ database='usuarios'
281
+ )
282
+
283
+ dados = db.select_data(
284
+ tablename='usuarios',
285
+ columns=['id', 'nome', 'username'],
286
+ condition=db.filter_by(
287
+ column='id'
288
+ ).GATHER_OR_EQUAL(
289
+ value=1
290
+ )
291
+ )
292
+
293
+ print(dados)
294
+ ```
295
+
296
+ **Parametros**
297
+ - `tablename`: *str* - nome da tabela
298
+ - `columns`: *list[str]* (opcional) - lista de nome das colunas que pretende retornar. Caso não especifique, irá retornar todas colunas da tabela
299
+ - `condition`: *Filter* - Para mais detalhes veja [parametros de filtragem](#Parametros-de-Filtragem)
300
+
301
+ ***
302
+
303
+ ### Actualizar Dados
304
+ ```python
305
+ from manage_sql import MYSQL
306
+
307
+ db = MYSQL(
308
+ host='localhost',
309
+ username='root',
310
+ password='Alex756545!',
311
+ database='usuarios'
312
+ )
313
+
314
+ db.update_data(
315
+ tablename='usuarios',
316
+ edit_query=db.ColumnData(
317
+ column='nome',
318
+ value='Alex Zunguze'
319
+ ),
320
+ condition=db.filter_by(
321
+ column='id'
322
+ ).EQUAL(
323
+ value=1
324
+ )
325
+ )
326
+ ```
327
+
328
+ **Parametros**
329
+ - `tablename`: str - nome da tabela que pretende inserir os dados
330
+ - `edit_query`: *list[ColumnData]* - lista de ColumnData abaixo descritos
331
+ - `ColumnData`: ColumnDate - instância para inserir os dados nas colunas da tabela. Recebe `column` que corresponde ao nome da coluna e `value` correspondente ao novo valor a inserir
332
+ - `condition`: *Filter* (opcional) - Para mais detalhes veja [parametros de filtragem](#Parametros-de-Filtragem)
333
+
334
+ ***
335
+
336
+ ### Adiconar Coluna
337
+ ```python
338
+ db = MYSQL(
339
+ host='localhost',
340
+ username='root',
341
+ password='Alex756545!',
342
+ database='usuarios'
343
+ )
344
+
345
+ db.add_column(
346
+ tablename='usuarios',
347
+ column=db.Column(
348
+ name='idade',
349
+ column_type=db.column_types.Integer.integer
350
+ )
351
+ )
352
+ ```
353
+
354
+ **Parametros**
355
+ - `tablename`: *str* - nome da tabela
356
+ - `column`: *Column* - instância contendo os detalhes na coluna a ser adicionada
357
+
358
+ Mais Detalhes sobre a `Column` veja a documentação [clicando aqui](#criar-tabela)
359
+
360
+ ***
361
+
362
+ ### Apagar Coluna
363
+ ```python
364
+ from manage_sql import MYSQL
365
+
366
+ db = MYSQL(
367
+ host='localhost',
368
+ username='root',
369
+ password='Alex756545!',
370
+ database='usuarios'
371
+ )
372
+
373
+ db.drop_column(
374
+ tablename='usuarios',
375
+ column_name='idade'
376
+ )
377
+ ```
378
+
379
+ **Parametros**
380
+ - `tablename`: *str* - nome da tabela
381
+ - `column_name`: *str* - nome da coluna que pretende apagar
382
+
383
+ ***
384
+
385
+ ### Apagar Tabela
386
+ ```python
387
+ from manage_sql import MYSQL
388
+
389
+ db = MYSQL(
390
+ host='localhost',
391
+ username='root',
392
+ password='Alex756545!',
393
+ database='usuarios'
394
+ )
395
+
396
+ db.drop_table(
397
+ tablename='usuarios'
398
+ )
399
+ ```
400
+
401
+ **Parametros**
402
+ - `tablename`: *str* - nome da tabela que pretende apagar
403
+
404
+ **Atenção**: Tenha em atenção que se executar este comando perderá todos dados dentro da referida tabela.
405
+
406
+ ### Comandos SQL
407
+ Caso queira rodar outras queries SQL que o `manage_sql` ainda não possua de forma nativa, pode usar o método `execute_query` conforme vem no exemplo abaixo:
408
+
409
+ ```python
410
+ from manage_sql import MYSQL
411
+
412
+ db = MYSQL(
413
+ host='localhost',
414
+ username='root',
415
+ password='Alex756545!',
416
+ database='usuarios'
417
+ )
418
+
419
+ columns = db.execute_query(
420
+ query='show columns from usuarios'
421
+ )
422
+
423
+ print(columns)
424
+ ```
425
+
426
+ ### Encriptar Valores
427
+ O `manage_sql` possui um metodo proprio para encriptar valores baseado no hash512 que geral 128 caracteres aleatórios. É util para armazenar senhas criptografadas
428
+
429
+ ```python
430
+ from manage_sql import MYSQL
431
+ db = MYSQL(
432
+ host='localhost',
433
+ username='root',
434
+ password='Alex756545!',
435
+ database='usuarios'
436
+ )
437
+
438
+ hash_value = db.encrypt_value(
439
+ value='Aa12456'
440
+ )
441
+ ```