manage-sql 0.2.2__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.
- manage_sql/SQLITE.py +444 -0
- manage_sql/__init__.py +2 -0
- manage_sql/test_SQLITE.py +96 -0
- manage_sql-0.2.2.dist-info/LICENCE +9 -0
- manage_sql-0.2.2.dist-info/METADATA +154 -0
- manage_sql-0.2.2.dist-info/RECORD +8 -0
- manage_sql-0.2.2.dist-info/WHEEL +5 -0
- manage_sql-0.2.2.dist-info/top_level.txt +1 -0
manage_sql/SQLITE.py
ADDED
|
@@ -0,0 +1,444 @@
|
|
|
1
|
+
import sqlite3 as sq
|
|
2
|
+
import hashlib as sh
|
|
3
|
+
from pathlib import Path
|
|
4
|
+
from deprecated import deprecated
|
|
5
|
+
import os
|
|
6
|
+
|
|
7
|
+
class SQLITE:
|
|
8
|
+
'''
|
|
9
|
+
Faça a gestão dos seus bancos de dados com esta classe.
|
|
10
|
+
|
|
11
|
+
Importe a classe e use um dos métodos abaixo:
|
|
12
|
+
```python
|
|
13
|
+
# Importando a classe
|
|
14
|
+
from manage-sql import SQLITE
|
|
15
|
+
|
|
16
|
+
# Instacioando a classe
|
|
17
|
+
db = SQLITE('nome_do_banco')
|
|
18
|
+
|
|
19
|
+
# Usar cada um dos metodos:
|
|
20
|
+
db.criarTabela()
|
|
21
|
+
db.inserirDados()
|
|
22
|
+
db.apagarDados()
|
|
23
|
+
db.editarDados()
|
|
24
|
+
db.adicionarColuna()
|
|
25
|
+
db.apagarColuna()
|
|
26
|
+
db.apagarTabela()
|
|
27
|
+
db.verDados()
|
|
28
|
+
db.encriptarValor()
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
Funções descontinuadas
|
|
32
|
+
```python
|
|
33
|
+
# Encriptar valores
|
|
34
|
+
db.encryptPass() # Função antiga
|
|
35
|
+
db.encriptarValor() # Nova função
|
|
36
|
+
|
|
37
|
+
# Consultar dados
|
|
38
|
+
db.verDadosPlus() # Função antiga
|
|
39
|
+
db.verDados() # Função em uso
|
|
40
|
+
```
|
|
41
|
+
'''
|
|
42
|
+
|
|
43
|
+
def __init__(self, nomeBanco: str):
|
|
44
|
+
"""
|
|
45
|
+
Inicializa a classe com o nome do banco de dados.
|
|
46
|
+
|
|
47
|
+
:param nomeBanco: Nome do banco de dados a ser utilizado.
|
|
48
|
+
|
|
49
|
+
Exemplo de uso:
|
|
50
|
+
```python
|
|
51
|
+
db = SQLITE('meu_banco)
|
|
52
|
+
```
|
|
53
|
+
"""
|
|
54
|
+
self.nomeBanco = nomeBanco
|
|
55
|
+
|
|
56
|
+
def conectarBanco(self):
|
|
57
|
+
"""
|
|
58
|
+
Conecta ao banco de dados e cria a pasta 'database' se não existir.
|
|
59
|
+
|
|
60
|
+
:return: Um objeto de conexão e cursor do banco de dados.
|
|
61
|
+
|
|
62
|
+
Exemplo de uso:
|
|
63
|
+
```python
|
|
64
|
+
db = SQLITE('meu_banco')
|
|
65
|
+
database, cursor = db.conectarBanco()
|
|
66
|
+
```
|
|
67
|
+
"""
|
|
68
|
+
path = Path.cwd() / "database"
|
|
69
|
+
path.mkdir(parents=True, exist_ok=True)
|
|
70
|
+
|
|
71
|
+
database = sq.connect(f'database/{self.nomeBanco}.db')
|
|
72
|
+
cursor = database.cursor()
|
|
73
|
+
|
|
74
|
+
return database, cursor
|
|
75
|
+
|
|
76
|
+
def criarTabela(self, nomeTabela: str, Colunas: list, ColunasTipo: list):
|
|
77
|
+
"""
|
|
78
|
+
Cria uma tabela no banco de dados.
|
|
79
|
+
|
|
80
|
+
:param nomeTabela: Nome da tabela a ser criada.
|
|
81
|
+
:param Colunas: Lista com os nomes das colunas.
|
|
82
|
+
:param ColunasTipo: Lista com os tipos das colunas.
|
|
83
|
+
|
|
84
|
+
Exemplo de uso:
|
|
85
|
+
```python
|
|
86
|
+
db = SQLITE('meu_banco')
|
|
87
|
+
db.criarTabela(
|
|
88
|
+
nomeTabela='minha_tabela',
|
|
89
|
+
Colunas=['coluna1', 'coluna2'],
|
|
90
|
+
ColunasTipo=['TEXT', 'INTEGER']
|
|
91
|
+
)
|
|
92
|
+
```
|
|
93
|
+
"""
|
|
94
|
+
if type(Colunas) == list and type(ColunasTipo) == list:
|
|
95
|
+
if len(Colunas) == len(ColunasTipo):
|
|
96
|
+
database, cursor = self.conectarBanco()
|
|
97
|
+
ListaColunas = []
|
|
98
|
+
|
|
99
|
+
for i in range(len(Colunas)):
|
|
100
|
+
ListaColunas.append(f'{Colunas[i]} {ColunasTipo[i]}')
|
|
101
|
+
|
|
102
|
+
ColunaSQL = ','.join(ListaColunas)
|
|
103
|
+
|
|
104
|
+
cursor.execute(f'CREATE TABLE IF NOT EXISTS {nomeTabela} (id INTEGER PRIMARY KEY AUTOINCREMENT,{ColunaSQL})')
|
|
105
|
+
|
|
106
|
+
database.commit()
|
|
107
|
+
database.close()
|
|
108
|
+
else:
|
|
109
|
+
print('Impossível criar tabelas: quantidade de colunas e tipos não coincide.')
|
|
110
|
+
else:
|
|
111
|
+
print('Impossível criar tabelas: parâmetros devem ser listas.')
|
|
112
|
+
|
|
113
|
+
def inserirDados(self, nomeTabela: str, Colunas: list, dados: list):
|
|
114
|
+
"""
|
|
115
|
+
Insere dados em uma tabela do banco de dados.
|
|
116
|
+
|
|
117
|
+
:param nomeTabela: Nome da tabela onde os dados serão inseridos.
|
|
118
|
+
:param Colunas: Lista com os nomes das colunas.
|
|
119
|
+
:param dados: Lista com os valores a serem inseridos.
|
|
120
|
+
|
|
121
|
+
Exemplo de uso:
|
|
122
|
+
```python
|
|
123
|
+
db = SQLITE('meu_banco')
|
|
124
|
+
db.inserirDados(
|
|
125
|
+
nomeTabela='minha_tabela',
|
|
126
|
+
Colunas=['coluna1', 'coluna2'],
|
|
127
|
+
dados=['valor1', 123]
|
|
128
|
+
)
|
|
129
|
+
```
|
|
130
|
+
"""
|
|
131
|
+
if type(Colunas) == list and type(dados) == list:
|
|
132
|
+
if len(Colunas) == len(dados):
|
|
133
|
+
database, cursor = self.conectarBanco()
|
|
134
|
+
|
|
135
|
+
ColunaSQL = ', '.join(Colunas)
|
|
136
|
+
|
|
137
|
+
Dados = []
|
|
138
|
+
|
|
139
|
+
for dado in dados:
|
|
140
|
+
if type(dado) == str or type(dado) == bool:
|
|
141
|
+
Dados.append(f"'{dado}'")
|
|
142
|
+
else:
|
|
143
|
+
Dados.append(str(dado))
|
|
144
|
+
|
|
145
|
+
params = ', '.join('?' for _ in Dados)
|
|
146
|
+
|
|
147
|
+
cursor.execute(f'INSERT INTO {nomeTabela} ({ColunaSQL}) VALUES ({params})', (Dados))
|
|
148
|
+
|
|
149
|
+
database.commit()
|
|
150
|
+
database.close()
|
|
151
|
+
else:
|
|
152
|
+
print('Impossível inserir dados: quantidade de colunas e valores não coincide.')
|
|
153
|
+
else:
|
|
154
|
+
print('Impossível inserir dados: parâmetros devem ser listas.')
|
|
155
|
+
|
|
156
|
+
def apagarDados(self, nomeTabela: str, conditions: str = ''):
|
|
157
|
+
"""
|
|
158
|
+
Apaga registros de uma tabela no banco de dados SQLite.
|
|
159
|
+
|
|
160
|
+
:param nomeTabela: Nome da tabela da qual os dados serão apagados.
|
|
161
|
+
:param conditions: Condição SQL para selecionar os registros a serem apagados. Se vazio, todos os registros serão apagados.
|
|
162
|
+
|
|
163
|
+
Exemplo de uso:
|
|
164
|
+
|
|
165
|
+
```python
|
|
166
|
+
db = SQLITE('meu_banco')
|
|
167
|
+
|
|
168
|
+
# Apaga registros com id = 1
|
|
169
|
+
db.apagarDados("minha_tabela", "id = 1")
|
|
170
|
+
|
|
171
|
+
# Apaga todos os registros da tabela
|
|
172
|
+
db.apagarDados("minha_tabela")
|
|
173
|
+
```
|
|
174
|
+
"""
|
|
175
|
+
database, cursor = self.conectarBanco()
|
|
176
|
+
|
|
177
|
+
if conditions == '':
|
|
178
|
+
cursor.execute(f'DELETE FROM {nomeTabela}')
|
|
179
|
+
|
|
180
|
+
else:
|
|
181
|
+
cursor.execute(f'DELETE FROM {nomeTabela} WHERE {conditions}')
|
|
182
|
+
|
|
183
|
+
database.commit()
|
|
184
|
+
database.close()
|
|
185
|
+
|
|
186
|
+
def editarDados(self, nomeTabela: str, Coluna: str, Valor: str, conditions: str = ''):
|
|
187
|
+
"""
|
|
188
|
+
Edita registros em uma tabela no banco de dados SQLite.
|
|
189
|
+
|
|
190
|
+
:param nomeTabela: Nome da tabela a ser editada.
|
|
191
|
+
:param Coluna: Nome da coluna a ser editada.
|
|
192
|
+
:param Valor: Novo valor a ser atribuído à coluna.
|
|
193
|
+
:param conditions: Condição SQL para selecionar os registros a serem editados. Se vazio, todos os registros serão atualizados.
|
|
194
|
+
|
|
195
|
+
Exemplo de uso:
|
|
196
|
+
```python
|
|
197
|
+
db = SQLITE('meu_banco')
|
|
198
|
+
|
|
199
|
+
# Edita registros com id = 1
|
|
200
|
+
db.editarDados("minha_tabela", "nome_coluna", "novo_valor", "id = 1")
|
|
201
|
+
|
|
202
|
+
# Edita todos os registros da tabela
|
|
203
|
+
db.editarDados("minha_tabela", "nome_coluna", "novo_valor")
|
|
204
|
+
```
|
|
205
|
+
"""
|
|
206
|
+
database, cursor = self.conectarBanco()
|
|
207
|
+
|
|
208
|
+
if conditions == '':
|
|
209
|
+
cursor.execute(f"UPDATE {nomeTabela} SET {Coluna} = ?", (Valor,))
|
|
210
|
+
|
|
211
|
+
else:
|
|
212
|
+
cursor.execute(f"UPDATE {nomeTabela} SET {Coluna} = ? WHERE {conditions}", (Valor,))
|
|
213
|
+
|
|
214
|
+
database.commit()
|
|
215
|
+
database.close()
|
|
216
|
+
|
|
217
|
+
def adicionarColuna(self, nomeTabela: str, Coluna: str, ColunaTipo: str):
|
|
218
|
+
"""
|
|
219
|
+
Adiciona uma nova coluna a uma tabela no banco de dados SQLite.
|
|
220
|
+
|
|
221
|
+
:param nomeTabela: Nome da tabela na qual a coluna será adicionada.
|
|
222
|
+
:param Coluna: Nome da nova coluna.
|
|
223
|
+
:param ColunaTipo: Tipo de dados da nova coluna (por exemplo, INTEGER, TEXT).
|
|
224
|
+
|
|
225
|
+
Exemplo de uso:
|
|
226
|
+
```python
|
|
227
|
+
db_manager = DatabaseManager()
|
|
228
|
+
|
|
229
|
+
# Adiciona uma coluna do tipo TEXT
|
|
230
|
+
db_manager.adicionarColuna("minha_tabela", "nova_coluna", "TEXT")```
|
|
231
|
+
"""
|
|
232
|
+
database, cursor = self.conectarBanco()
|
|
233
|
+
|
|
234
|
+
cursor.execute(f'ALTER TABLE {nomeTabela} ADD COLUMN {Coluna} {ColunaTipo}')
|
|
235
|
+
|
|
236
|
+
database.commit()
|
|
237
|
+
database.close()
|
|
238
|
+
|
|
239
|
+
def apagarColuna(self, nomeTabela: str, Coluna: str):
|
|
240
|
+
"""
|
|
241
|
+
Apaga uma coluna de uma tabela do banco de dados.
|
|
242
|
+
|
|
243
|
+
:param nomeTabela: Nome da tabela onde a coluna será apagada.
|
|
244
|
+
:param Coluna: Nome da coluna a ser apagada.
|
|
245
|
+
|
|
246
|
+
Exemplo de uso:
|
|
247
|
+
```python
|
|
248
|
+
db = SQLITE('meu_banco')
|
|
249
|
+
db.apagarColuna('minha_tabela', 'coluna2')
|
|
250
|
+
```
|
|
251
|
+
"""
|
|
252
|
+
database, cursor = self.conectarBanco()
|
|
253
|
+
|
|
254
|
+
cursor.execute(f'ALTER TABLE {nomeTabela} DROP COLUMN {Coluna}')
|
|
255
|
+
|
|
256
|
+
database.commit()
|
|
257
|
+
database.close()
|
|
258
|
+
|
|
259
|
+
def apagarTabela(self, nomeTabela: str):
|
|
260
|
+
"""
|
|
261
|
+
Apaga uma tabela do banco de dados.
|
|
262
|
+
|
|
263
|
+
:param nomeTabela: Nome da tabela a ser apagada.
|
|
264
|
+
|
|
265
|
+
Exemplo de uso:
|
|
266
|
+
```python
|
|
267
|
+
db = SQLITE('meu_banco')
|
|
268
|
+
db.apagarTabela('minha_tabela')
|
|
269
|
+
```
|
|
270
|
+
"""
|
|
271
|
+
database, cursor = self.conectarBanco()
|
|
272
|
+
|
|
273
|
+
cursor.execute(f'DROP TABLE IF EXISTS {nomeTabela}')
|
|
274
|
+
|
|
275
|
+
database.commit()
|
|
276
|
+
database.close()
|
|
277
|
+
|
|
278
|
+
def verDados(self, nomeTabela: str, conditions: str = '', colunas: str = '*'):
|
|
279
|
+
"""
|
|
280
|
+
Consulta dados de uma tabela do banco de dados.
|
|
281
|
+
|
|
282
|
+
:param nomeTabela: Nome da tabela a ser consultada.
|
|
283
|
+
:param conditions: Condições para a consulta (opcional).
|
|
284
|
+
:param colunas: Colunas a serem selecionadas (opcional).
|
|
285
|
+
:return: Dados consultados.
|
|
286
|
+
|
|
287
|
+
Exemplo de uso:
|
|
288
|
+
```python
|
|
289
|
+
db = SQLITE('meu_banco')
|
|
290
|
+
dados = db.verDados('minha_tabela')
|
|
291
|
+
print(dados)
|
|
292
|
+
```
|
|
293
|
+
"""
|
|
294
|
+
database, cursor = self.conectarBanco()
|
|
295
|
+
|
|
296
|
+
if conditions == '':
|
|
297
|
+
cursor.execute(f'SELECT {colunas} FROM {nomeTabela}')
|
|
298
|
+
else:
|
|
299
|
+
cursor.execute(f'SELECT {colunas} FROM {nomeTabela} WHERE {conditions}')
|
|
300
|
+
|
|
301
|
+
dados = cursor.fetchall()
|
|
302
|
+
|
|
303
|
+
database.commit()
|
|
304
|
+
database.close()
|
|
305
|
+
|
|
306
|
+
return dados
|
|
307
|
+
|
|
308
|
+
@deprecated(reason='Esta função será descontinuada nas versões subsequentes. Considere usar função verDados()')
|
|
309
|
+
def verDadosPlus(self, query: str, params: list):
|
|
310
|
+
"""
|
|
311
|
+
Consulta dados com base em uma query SQL customizada.
|
|
312
|
+
|
|
313
|
+
:param query: Query SQL a ser executada.
|
|
314
|
+
:param params: Parâmetros para a query SQL.
|
|
315
|
+
:return: Dados consultados.
|
|
316
|
+
|
|
317
|
+
```python
|
|
318
|
+
db = SQLITE('meu_banco')
|
|
319
|
+
query = "SELECT * FROM minha_tabela WHERE coluna1 = ? AND coluna2 = ?"
|
|
320
|
+
params = ['valor1', 123]
|
|
321
|
+
dados = db.verDadosPlus(query, params)
|
|
322
|
+
print(dados)
|
|
323
|
+
```
|
|
324
|
+
"""
|
|
325
|
+
database, cursor = self.conectarBanco()
|
|
326
|
+
|
|
327
|
+
cursor.execute(query, params)
|
|
328
|
+
dados = cursor.fetchall()
|
|
329
|
+
|
|
330
|
+
database.commit()
|
|
331
|
+
database.close()
|
|
332
|
+
|
|
333
|
+
return dados
|
|
334
|
+
|
|
335
|
+
@deprecated(reason='Esta função vai ser descontinuada nas versões subsequentes. Considere usar a função encriptarValor()')
|
|
336
|
+
def encryptPass(self, value: str):
|
|
337
|
+
"""
|
|
338
|
+
Gera um hash SHA-512 de um valor fornecido.
|
|
339
|
+
|
|
340
|
+
:param value: Valor a ser criptografada.
|
|
341
|
+
:return: Valor criptografado em SHA-512.
|
|
342
|
+
|
|
343
|
+
Exemplo de uso:
|
|
344
|
+
```python
|
|
345
|
+
db = SQLITE('meu_banco')
|
|
346
|
+
value_hashed = db.encryptPass('minha_senha')
|
|
347
|
+
print(value_hashed)
|
|
348
|
+
```
|
|
349
|
+
"""
|
|
350
|
+
hash = sh.sha512()
|
|
351
|
+
hash.update(value.encode('UTF-8'))
|
|
352
|
+
value_hashed = hash.hexdigest()
|
|
353
|
+
|
|
354
|
+
return value_hashed
|
|
355
|
+
|
|
356
|
+
def encriptarValor(self, value: str):
|
|
357
|
+
"""
|
|
358
|
+
Gera um hash SHA-512 de um valor fornecido.
|
|
359
|
+
|
|
360
|
+
:param value: Valor a ser criptografada.
|
|
361
|
+
:return: Valor criptografado em SHA-512.
|
|
362
|
+
|
|
363
|
+
Exemplo de uso:
|
|
364
|
+
```python
|
|
365
|
+
db = SQLITE('meu_banco')
|
|
366
|
+
value_hashed = db.encryptValor('valor')
|
|
367
|
+
print(value_hashed)
|
|
368
|
+
```
|
|
369
|
+
"""
|
|
370
|
+
hash = sh.sha512()
|
|
371
|
+
hash.update(value.encode('UTF-8'))
|
|
372
|
+
value_hashed = hash.hexdigest()
|
|
373
|
+
|
|
374
|
+
return value_hashed
|
|
375
|
+
|
|
376
|
+
|
|
377
|
+
if __name__ == '__main__':
|
|
378
|
+
# Exemplo de uso da classe SQLITE
|
|
379
|
+
db = SQLITE('users')
|
|
380
|
+
|
|
381
|
+
# Criar tabela
|
|
382
|
+
db.criarTabela(
|
|
383
|
+
nomeTabela='users',
|
|
384
|
+
Colunas=['nome', 'username', 'senha'],
|
|
385
|
+
ColunasTipo=['TEXT', 'TEXT', 'TEXT']
|
|
386
|
+
)
|
|
387
|
+
|
|
388
|
+
# Inserir dados
|
|
389
|
+
db.inserirDados(
|
|
390
|
+
nomeTabela='users',
|
|
391
|
+
Colunas=['nome', 'username', 'senha'],
|
|
392
|
+
dados=['Alexandre Zunguze', 'azunguze', db.encriptarValor('Aa123')]
|
|
393
|
+
)
|
|
394
|
+
|
|
395
|
+
# Adicionar coluna
|
|
396
|
+
db.adicionarColuna(
|
|
397
|
+
nomeTabela='users',
|
|
398
|
+
Coluna='ColunaB',
|
|
399
|
+
ColunaTipo='TEXT'
|
|
400
|
+
),
|
|
401
|
+
|
|
402
|
+
# Editar dados
|
|
403
|
+
db.editarDados(
|
|
404
|
+
nomeTabela='users',
|
|
405
|
+
Coluna='ColunaB',
|
|
406
|
+
Valor='Teste'
|
|
407
|
+
)
|
|
408
|
+
|
|
409
|
+
# Ver dados
|
|
410
|
+
dados = db.verDados('users')
|
|
411
|
+
print(dados)
|
|
412
|
+
|
|
413
|
+
# Apagar Coluna
|
|
414
|
+
db.apagarColuna(
|
|
415
|
+
nomeTabela='users',
|
|
416
|
+
Coluna='senha'
|
|
417
|
+
)
|
|
418
|
+
|
|
419
|
+
# Ver dados
|
|
420
|
+
dados = db.verDados('users')
|
|
421
|
+
print(dados)
|
|
422
|
+
|
|
423
|
+
# Inserir dados
|
|
424
|
+
db.inserirDados(
|
|
425
|
+
nomeTabela='users',
|
|
426
|
+
Colunas=['nome', 'username', 'ColunaB'],
|
|
427
|
+
dados=['Alexandre Zunguze', 'azunguze', 'Qualquer coisa']
|
|
428
|
+
)
|
|
429
|
+
|
|
430
|
+
# Apagar dados
|
|
431
|
+
db.apagarDados(
|
|
432
|
+
nomeTabela='users',
|
|
433
|
+
conditions='id = 1'
|
|
434
|
+
)
|
|
435
|
+
|
|
436
|
+
# Ver dados
|
|
437
|
+
dados = db.verDados('users')
|
|
438
|
+
print(dados)
|
|
439
|
+
|
|
440
|
+
# Apagar tabela
|
|
441
|
+
db.apagarTabela('users')
|
|
442
|
+
|
|
443
|
+
# Apagar o Banco de Dados
|
|
444
|
+
os.remove(rf'{Path.cwd()}\database\users.db')
|
manage_sql/__init__.py
ADDED
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import unittest
|
|
2
|
+
from pathlib import Path
|
|
3
|
+
import os
|
|
4
|
+
from dataclasses import is_dataclass
|
|
5
|
+
|
|
6
|
+
try:
|
|
7
|
+
from SQLITE import SQLITE
|
|
8
|
+
|
|
9
|
+
except:
|
|
10
|
+
from manage_sql import SQLITE
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class TestSQLITE(unittest.TestCase):
|
|
14
|
+
|
|
15
|
+
@classmethod
|
|
16
|
+
def setUp(self):
|
|
17
|
+
self.db_name: str = 'db_test'
|
|
18
|
+
self.table_name = 'tabela_test'
|
|
19
|
+
self.columns = ['Col_1', 'Col_2', 'Col_3']
|
|
20
|
+
self.columns_type = ['TEXT', 'TEXT', 'INTEGER']
|
|
21
|
+
self.path: str = rf"{Path.cwd()}\database\{self.db_name}.db"
|
|
22
|
+
self.database: SQLITE = SQLITE(self.db_name)
|
|
23
|
+
self.database.criarTabela(
|
|
24
|
+
nomeTabela=self.table_name,
|
|
25
|
+
Colunas=self.columns,
|
|
26
|
+
ColunasTipo=self.columns_type
|
|
27
|
+
)
|
|
28
|
+
|
|
29
|
+
def tearDown(self) -> None:
|
|
30
|
+
os.remove(self.path)
|
|
31
|
+
|
|
32
|
+
# Testando a classe importada
|
|
33
|
+
def test_e_classe(self):
|
|
34
|
+
self.assertFalse(is_dataclass(SQLITE))
|
|
35
|
+
|
|
36
|
+
# Testando a conexão
|
|
37
|
+
def test_conectarBanco(self):
|
|
38
|
+
database = SQLITE(self.db_name).conectarBanco()
|
|
39
|
+
database[0].close()
|
|
40
|
+
self.assertEqual(type(database), tuple)
|
|
41
|
+
|
|
42
|
+
def test_inserirDados(self):
|
|
43
|
+
self.database.inserirDados(
|
|
44
|
+
nomeTabela=self.table_name,
|
|
45
|
+
Colunas=self.columns,
|
|
46
|
+
dados=['A1','A2', 123]
|
|
47
|
+
)
|
|
48
|
+
data = self.database.verDados(
|
|
49
|
+
nomeTabela=self.table_name,
|
|
50
|
+
conditions='id = 1'
|
|
51
|
+
)
|
|
52
|
+
self.assertEqual(len(data), 1)
|
|
53
|
+
|
|
54
|
+
def test_adicionarColuna(self):
|
|
55
|
+
self.database.adicionarColuna(
|
|
56
|
+
nomeTabela=self.table_name,
|
|
57
|
+
Coluna='Col_4',
|
|
58
|
+
ColunaTipo='TEXT'
|
|
59
|
+
)
|
|
60
|
+
|
|
61
|
+
def test_editarDados(self):
|
|
62
|
+
self.database.inserirDados(
|
|
63
|
+
nomeTabela=self.table_name,
|
|
64
|
+
Colunas=self.columns,
|
|
65
|
+
dados=['A1','A2', 123]
|
|
66
|
+
)
|
|
67
|
+
|
|
68
|
+
self.database.editarDados(
|
|
69
|
+
nomeTabela=self.table_name,
|
|
70
|
+
Coluna=self.columns[2],
|
|
71
|
+
Valor='125'
|
|
72
|
+
)
|
|
73
|
+
|
|
74
|
+
data = self.database.verDados(
|
|
75
|
+
nomeTabela=self.table_name
|
|
76
|
+
)
|
|
77
|
+
|
|
78
|
+
self.assertEqual(data[0][3], 125)
|
|
79
|
+
|
|
80
|
+
def test_apagarDados(self):
|
|
81
|
+
self.database.inserirDados(
|
|
82
|
+
nomeTabela=self.table_name,
|
|
83
|
+
Colunas=self.columns,
|
|
84
|
+
dados=['A1','A2', 123]
|
|
85
|
+
)
|
|
86
|
+
self.database.apagarDados(
|
|
87
|
+
nomeTabela=self.table_name
|
|
88
|
+
)
|
|
89
|
+
data = self.database.verDados(
|
|
90
|
+
nomeTabela=self.table_name
|
|
91
|
+
)
|
|
92
|
+
self.assertEqual(len(data), 0)
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
if __name__ == '__main__':
|
|
96
|
+
unittest.main()
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
The MIT Licence (MIT)
|
|
2
|
+
|
|
3
|
+
Copyright 2024 Web Tech Moz
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
|
6
|
+
|
|
7
|
+
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
|
8
|
+
|
|
9
|
+
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
Metadata-Version: 2.1
|
|
2
|
+
Name: manage-sql
|
|
3
|
+
Version: 0.2.2
|
|
4
|
+
Summary: Biblioteca Python para gestão de bases de dados SQLite com maior eficiência
|
|
5
|
+
Home-page: https://github.com/webtechmoz/manage-sql
|
|
6
|
+
Author: Web Tech Moz
|
|
7
|
+
Author-email: zoidycine@gmail.com
|
|
8
|
+
License: MIT
|
|
9
|
+
Keywords: manage-sql,sqlite,sqlite manager
|
|
10
|
+
Classifier: Programming Language :: Python :: 3
|
|
11
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
12
|
+
Classifier: Operating System :: OS Independent
|
|
13
|
+
Requires-Python: >=3.6
|
|
14
|
+
Description-Content-Type: text/markdown
|
|
15
|
+
License-File: LICENCE
|
|
16
|
+
Requires-Dist: deprecated
|
|
17
|
+
Requires-Dist: dataclasses
|
|
18
|
+
Requires-Dist: pathlib
|
|
19
|
+
|
|
20
|
+
# SQLITE.py
|
|
21
|
+
|
|
22
|
+
`SQLITE.py` é uma classe Python para interagir com bancos de dados SQLite de forma simplificada. Esta classe fornece métodos para conectar a um banco de dados, criar tabelas, inserir dados e outras operações básicas.
|
|
23
|
+
|
|
24
|
+
## Índice
|
|
25
|
+
1. [Introdução](#introdução)
|
|
26
|
+
2. [Instalação](#instalação)
|
|
27
|
+
3. [Uso da Classe SQLITE](#uso-da-classe-sqlite)
|
|
28
|
+
1. [Instanciando a Classe](#instanciando-a-classe)
|
|
29
|
+
2. [Métodos Disponíveis](#métodos-disponíveis)
|
|
30
|
+
- [conectarBanco](#conectarbanco)
|
|
31
|
+
- [criarTabela](#criartabela)
|
|
32
|
+
- [inserirDados](#inserirdados)
|
|
33
|
+
- [apagarDados](#apagardados)
|
|
34
|
+
- [editarDados](#editardados)
|
|
35
|
+
- [adicionarColuna](#adicionarcoluna)
|
|
36
|
+
- [apagarColuna](#apagarcoluna)
|
|
37
|
+
- [apagarTabela](#apagartabela)
|
|
38
|
+
- [verDados](#verdados)
|
|
39
|
+
- [encryptPass (descontinuado)](#encryptpass-descontinuado)
|
|
40
|
+
- [encriptarValor](#encriptarvalor)
|
|
41
|
+
- [verDadosPlus (descontinuado)](#verdadosplus-descontinuado)
|
|
42
|
+
|
|
43
|
+
4. [Contibuição](#contribuição)
|
|
44
|
+
5. [Licença](#licença)
|
|
45
|
+
|
|
46
|
+
## Instalação
|
|
47
|
+
|
|
48
|
+
Não há requisitos especiais de instalação além do Python 3.6+.
|
|
49
|
+
|
|
50
|
+
## Uso
|
|
51
|
+
|
|
52
|
+
Primeiro, importe a classe `SQLITE` e crie uma instância fornecendo o nome do banco de dados:
|
|
53
|
+
|
|
54
|
+
```python
|
|
55
|
+
# Importando a biblioteca
|
|
56
|
+
from manage-sql import SQLITE
|
|
57
|
+
|
|
58
|
+
# Instanciando a classe SQLITE
|
|
59
|
+
db = SQLITE('meu_banco')
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
## Métodos
|
|
63
|
+
|
|
64
|
+
### __init__
|
|
65
|
+
Inicializa a classe com o nome do banco de dados.
|
|
66
|
+
|
|
67
|
+
#### Parâmetros:
|
|
68
|
+
nomeBanco (str): Nome do banco de dados a ser utilizado.
|
|
69
|
+
|
|
70
|
+
#### Exemplo de uso:
|
|
71
|
+
```python
|
|
72
|
+
db = SQLITE('meu_banco')
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
### Conectar Banco
|
|
76
|
+
Conecta ao banco de dados e cria a pasta database se não existir.
|
|
77
|
+
|
|
78
|
+
#### Retorno:
|
|
79
|
+
Um objeto de conexão e cursor do banco de dados.
|
|
80
|
+
|
|
81
|
+
#### Exemplo de uso:
|
|
82
|
+
```python
|
|
83
|
+
database, cursor = db.conectarBanco()
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
### Criar Tabela
|
|
87
|
+
Cria uma tabela no banco de dados.
|
|
88
|
+
|
|
89
|
+
#### Parâmetros:
|
|
90
|
+
nomeTabela (str): Nome da tabela a ser criada.
|
|
91
|
+
Colunas (list): Lista com os nomes das colunas.
|
|
92
|
+
ColunasTipo (list): Lista com os tipos das colunas.
|
|
93
|
+
|
|
94
|
+
#### Exemplo de uso:
|
|
95
|
+
```python
|
|
96
|
+
db.criarTabela(
|
|
97
|
+
nomeTabela='minha_tabela',
|
|
98
|
+
Colunas=['coluna1', 'coluna2'],
|
|
99
|
+
ColunasTipo=['TEXT', 'INTEGER']
|
|
100
|
+
)
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
### Inserir Dados
|
|
104
|
+
Insere dados na tabela especificada.
|
|
105
|
+
|
|
106
|
+
#### Parâmetros:
|
|
107
|
+
nomeTabela (str): Nome da tabela onde os dados serão inseridos.
|
|
108
|
+
Colunas (list): Lista com os nomes das colunas onde os dados serão inseridos.
|
|
109
|
+
Valores (list): Lista com os valores a serem inseridos.
|
|
110
|
+
|
|
111
|
+
#### Exemplo de uso:
|
|
112
|
+
```python
|
|
113
|
+
db.inserirDados(
|
|
114
|
+
nomeTabela='minha_tabela',
|
|
115
|
+
Colunas=['coluna1', 'coluna2'],
|
|
116
|
+
Valores=['valor1', 123]
|
|
117
|
+
)
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
### Consultar Dados
|
|
121
|
+
Consulta dados da tabela especificada.
|
|
122
|
+
|
|
123
|
+
#### Parâmetros:
|
|
124
|
+
nomeTabela (str): Nome da tabela de onde os dados serão consultados.
|
|
125
|
+
Colunas (list): Lista com os nomes das colunas a serem consultadas.
|
|
126
|
+
|
|
127
|
+
#### Exemplo de uso:
|
|
128
|
+
```python
|
|
129
|
+
resultados = db.consultarDados(
|
|
130
|
+
nomeTabela='minha_tabela',
|
|
131
|
+
Colunas=['coluna1', 'coluna2']
|
|
132
|
+
)
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
### Apagar Dados
|
|
136
|
+
Deleta dados da tabela especificada com base em uma condição.
|
|
137
|
+
|
|
138
|
+
#### Parâmetros:
|
|
139
|
+
nomeTabela (str): Nome da tabela de onde os dados serão deletados.
|
|
140
|
+
Condicao (str): Condição para deletar os dados.
|
|
141
|
+
|
|
142
|
+
#### Exemplo de uso:
|
|
143
|
+
```python
|
|
144
|
+
db.deletarDados(
|
|
145
|
+
nomeTabela='minha_tabela',
|
|
146
|
+
Condicao='coluna1 = "valor1"'
|
|
147
|
+
)
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
## Contribuição
|
|
151
|
+
Sinta-se à vontade para contribuir com melhorias e novas funcionalidades.
|
|
152
|
+
|
|
153
|
+
## Licença
|
|
154
|
+
Este projeto está licenciado sob a licença MIT.
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
manage_sql/SQLITE.py,sha256=PzCgVgaPbid55oM54TCT6jJA0Hc3K7JLdd2pVbegfg0,13494
|
|
2
|
+
manage_sql/__init__.py,sha256=kyMrX4tZGLHK5eDRFzIct6dHIJ08k9w7rkGEOR5xNUY,63
|
|
3
|
+
manage_sql/test_SQLITE.py,sha256=xNR1_wWMkPLzfF7r6yawf-VPiKYjAvxDs3oFBQ8Lp94,2684
|
|
4
|
+
manage_sql-0.2.2.dist-info/LICENCE,sha256=Jrj79HT3Z-YHl370yCwRDTNJE2EjDOuspVtay-FVMWE,1090
|
|
5
|
+
manage_sql-0.2.2.dist-info/METADATA,sha256=q_53KWPee-kx_ZYvCqMP1l_TTlcGu6pXM-OTwHkUYQU,4244
|
|
6
|
+
manage_sql-0.2.2.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
|
|
7
|
+
manage_sql-0.2.2.dist-info/top_level.txt,sha256=Q-4U0UfXC7Qs41XpM-YMCGajKed55PYKglYmslcz3nI,11
|
|
8
|
+
manage_sql-0.2.2.dist-info/RECORD,,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
manage_sql
|