Zapytanie SQLite nie aktualizuje danych w tabeli

0

Witam, mam problem ponieważ w programie chcę zmienić wartość w bazie danych poprzez python używając sqlite3.
Utworzyłem tabelę zapytaniem:

CREATE TABLE IF NOT EXISTS testowa_slowa (
id INTEGER PRIMARY KEY AUTOINCREMENT,
slowo_polski TEXT NOT NULL,
slowo_niemiecki TEXT NOT NULL,
wspolczynnik INTEGER NOT NULL,
ilosc_pojawien CHAR NOT NULL,
UNIQUE (slowo_polski, slowo_niemiecki) ON CONFLICT IGNORE);

Do tabeli dodaję poprawnie rekordy:

INSERT INTO testowa_slowa
(slowo_polski, slowo_niemiecki, wspolczynnik, ilosc_pojawien)```
VALUES ('""" + tablica[0] + "', '" + tablica[1] + "', 0, 0);"

na stronie https://sqliteonline.com/ zapytaniem UPDATE dokonuje poprawnej modyfikacji danych:

UPDATE testowa_slowa SET wspolczynnik='97' WHERE id='9',

niestety w bazie na moim komputerze to samo zapytanie UPDATE nie działa prawidłowo.
Gdzie popełniłem błąd?
W załączonym pliku znajduje się baza danych oraz cały program.

1

SQL Lite jest bazą specyficzną. Miedzy innymi nadmiernie tolerancyjną (nie ma w rzeczywistości typów kolumn).
To takie moje skojarzenie, jak np id, współczynnik deklarujesz liczbowo a używasz jak string.

  1. na pewno w obu bazach jest na tym samym id ?
  2. testowe środowska webowe mogą (to moje przypuszczenie) mieć modyfikacje, np zw z bezpiecznym prowadzeniem tego biznesu.
0
ZrobieDobrze napisał(a):

SQL Lite jest bazą specyficzną. Miedzy innymi nadmiernie tolerancyjną (nie ma w rzeczywistości typów kolumn).
To takie moje skojarzenie, jak np id, współczynnik deklarujesz liczbowo a używasz jak string.

  1. na pewno w obu bazach jest na tym samym id ?
  2. testowe środowska webowe mogą (to moje przypuszczenie) mieć modyfikacje, np zw z bezpiecznym prowadzeniem tego biznesu.
  1. Tak w obu bazach jest to samo id.
0

Całego programu nie będę przeglądał, ale jak uruchomiłem te twoje zapytanie na tej twojej bazie to wydaje się działać normalnie:

import os
import sqlite3

db_filename = 'testowa_slowa.db'
with sqlite3.connect(db_filename) as conn:
    cursor = conn.cursor()

    cursor.execute("select * from testowa_slowa WHERE id=9")

    for row in cursor.fetchall():
        print(row)

    print("-" * 30)

    cursor.execute("UPDATE testowa_slowa SET wspolczynnik='97' WHERE id='9'")

    cursor.execute("select * from testowa_slowa WHERE id=9")
    for row in cursor.fetchall():
        print(row)
$ python test.py 
(9, 'kucharz', 'Koch', 100)
------------------------------
(9, 'kucharz', 'Koch', 97)
0
Spearhead napisał(a):

Całego programu nie będę przeglądał, ale jak uruchomiłem te twoje zapytanie na tej twojej bazie to wydaje się działać normalnie:

import os
import sqlite3

db_filename = 'testowa_slowa.db'
with sqlite3.connect(db_filename) as conn:
    cursor = conn.cursor()

    cursor.execute("select * from testowa_slowa WHERE id=9")

    for row in cursor.fetchall():
        print(row)

    print("-" * 30)

    cursor.execute("UPDATE testowa_slowa SET wspolczynnik='97' WHERE id='9'")

    cursor.execute("select * from testowa_slowa WHERE id=9")
    for row in cursor.fetchall():
        print(row)
$ python test.py 
(9, 'kucharz', 'Koch', 100)
------------------------------
(9, 'kucharz', 'Koch', 97)

Sprawdziłem, działa i nie wiem dlaczego to poprzednie nie działało :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1