-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathItems.py
More file actions
138 lines (113 loc) · 4.32 KB
/
Items.py
File metadata and controls
138 lines (113 loc) · 4.32 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
# ---------------------------------------------------------
# Descripción
# ---------------------------------------------------------
# Esta clase se usa como intermedio con la basa de datos
# toda la información debe pasar por acá.
#
# La base de esté código se tomó de
# https://www.tutorialesprogramacionya.com/pythonya/detalleconcepto.php?punto=88&codigo=89&inicio=75
# ---------------------------------------------------------
# ---------------------------------------------------------
# Librerías a usar
# ---------------------------------------------------------
import os
import sqlite3
# ---------------------------------------------------------
# ---------------------------------------------------------
# Clase a usar
# ---------------------------------------------------------
class Items:
# -----------------------------------------------------
def open(self):
# Obtenemos la ruta del archivo actual
path = os.path.dirname(os.path.abspath(__file__))
path = os.path.join(path, "items.db")
# Conectar a la base de datos
# Si la base de datos no existe, la crea
conexion = sqlite3.connect(path)
# Crear la tabla si no existe
# Si la tabla ya existe, generará un error
# que se captura con el except
try:
sql = ""
sql += "create table Item ("
sql += "ID integer primary key autoincrement, "
sql += "Name text, "
sql += "price real"
sql += ")"
conexion.execute(sql)
except sqlite3.OperationalError:
pass
# Retornar la conexión
# para que se pueda usar en otras funciones
return conexion
# -----------------------------------------------------
# -----------------------------------------------------
def add(self, data):
# Abre la conexión a la base de datos
cone = self.open()
# Se usa un cursor para ejecutar la consulta
cursor = cone.cursor()
# Se usa un string para crear la consulta
# Se insertan los datos de un artículo
# en la base de datos
sql = ""
sql += "insert into "
sql += "Item(Name, Price) "
sql += "values (?,?)"
# Se ejecuta la consulta con los datos
# data debe ser una tupla con los valores
# a insertar, en este caso (Name, Price)
cursor.execute(sql, data)
# Se guardan los cambios
cone.commit()
# Se cierra la conexión
cone.close()
# -----------------------------------------------------
# -----------------------------------------------------
def get_id(self, data):
try:
# Abre la conexión a la base de datos
cone = self.open()
# Se usa un cursor para ejecutar la consulta
cursor = cone.cursor()
# Se usa un string para crear la consulta
# Se busca un artículo por su ID
sql = ""
sql += "select "
sql += "Name, Price "
sql += "from Item "
sql += "where ID=?"
# Se ejecuta la consulta con los datos
# data debe ser una tupla con el ID a buscar
# en este caso (ID,)
cursor.execute(sql, data)
# Se obtienen los resultados
return cursor.fetchall()
finally:
# Se cierra la conexión
cone.close()
# -----------------------------------------------------
# -----------------------------------------------------
def get_all(self):
try:
# Abre la conexión a la base de datos
cone = self.open()
# Se usa un cursor para ejecutar la consulta
cursor = cone.cursor()
# Se usa un string para crear la consulta
# Se obtienen todos los artículos
# de la base de datos
sql = ""
sql += "select "
sql += "ID, Name, Price "
sql += "from Item"
# Se ejecuta la consulta
cursor.execute(sql)
# Se obtienen los resultados
# y se retornan como una lista de tuplas
return cursor.fetchall()
finally:
# Se cierra la conexión
cone.close()
# ---------------------------------------------------------