Я пытаюсь обновить информацию custommer ("cliente") в базе данных Sqlite, но есть только одно значение, которое не будет обновляться. Когда я пытался обновить столбец «fechaDeuda» (дата долга), он просто не делал этого. Странно то, что я кодировал функцию для обработки всех обновлений, и она отлично работает во всех остальных случаях, даже когда она вызывается в «Problemati c Line» (см. Код ниже), функция выполняет каждый оператор обновления базы данных. и не выдает никаких исключений, но все равно значение в базе данных не изменяется .
Вот код, в котором я обновляю три значения в одной строке:
try:
table = 'clientes'
_cliente = sqGenericSelectOne(table, None, 'id', generic.id) # This function retrieves one row based on the arguments passed
clienteID = _cliente[0]
fecha = date_time.split(' - ')[0]
sqUpdateOne(table, 'fechaDeuda', fecha, 'id', clienteID) #### Problematic line (!!!)
nuevoSaldo = float(_cliente[9]) - _pago
if nuevoSaldo < 0:
nuevoSaldo = 0
sqUpdateOne(table, 'saldo', nuevoSaldo, 'id', clienteID) # This line works fine
nuevoTotalPagado = float(_cliente[11]) + _pago
sqUpdateOne(table, 'totalPagado', nuevoTotalPagado, 'id', clienteID) # This one works fine too
except Exception as e:
error(0, e)
** Редактировать (по какой-то причине это было стерто, когда я писал) ** Вот код sqUpdateOne :
# Sqlite database value updater
def sqUpdateOne(table, column, newValue, refColumn, refValue):
try:
with conn:
c.execute(f'''UPDATE {table} SET {column} = {newValue} WHERE {refColumn} = {refValue}''')
print()
return
except Exception as e:
error(3, e, table)
return
А вот как создается база данных «клиенты» в случае необходимости. Стол отлично работает для всего остального. Я отслеживаю это, используя https://sqliteonline.com/
table = 'clientes'
try:
c.execute(f'''CREATE TABLE {table} (
id integer,
nombre text,
apellido text,
valoracion real,
direccion text,
tel_1 text,
tel_2 text,
correo text,
cantServicios integer,
saldo real,
fechaDeuda text,
totalPagado real,
descripcion text)''')
state(2)
except Exception as e:
error(2, e, table)
Редактировать: Я добавляю сюда скриншот sqUpdateOne
при вызове для обновления 'fecha', так что вы, ребята, может видеть значения, которые он получает (опять же, он прекрасно работает во всех остальных случаях):
И вот скриншот содержимого базы данных перед попыткой обновить его (оно остается прежним после )
Заранее спасибо!