Dzień dobry!
Zabrałem się ostatnio za pisanie programu w pythonie, który będzie wykorzystywał bazy danych. Do ich obsługi postanowiłem skorzystać z biblioteki sqlite3. Moją bazę tworzę w następujący sposób:
con = sqlite3.connect('words.db')
con.row_factory = sqlite3.Row
cur = con.cursor()
cur.execute("DROP TABLE IF EXISTS english_words;")
cur.execute("""
CREATE TABLE IF NOT EXISTS english_words (
id INTEGER PRIMARY KEY ASC,
word varchar(30) DEFAULT ''
)""")
cur.execute("DROP TABLE IF EXISTS polish_words;")
cur.execute("""
CREATE TABLE IF NOT EXISTS polish_words (
id INTEGER PRIMARY KEY ASC,
word varchar(30) DEFAULT ''
)""")
cur.executemany('INSERT INTO english_words VALUES(?,?)', eword)
cur.executemany('INSERT INTO polish_words VALUES(?,?)', pword)
Gdzie eword i pword to tuple zawierające rekordy.
Do tego momentu wszystko działa, powstaje baza danych z dwiema tabelami i wszystkimi zadanymi rekordami.
Problem pojawia się gdy chcę powstały po pierwszym wykonaniu programu plik words.db wykorzystać w innym skrypcie. Kiedy w innym skrypcie połączę się z już istniejącym plikiem words.db i spróbuję wypisać wybrane rekordy w następujący sposób :
con = sqlite3.connect('words.db')
con.row_factory = sqlite3.Row
cur = con.cursor()
cur.execute('SELECT word FROM english_words WHERE id BETWEEN 4 AND 7')
for i in cur.fetchall():
print(i[0])
Program zachowuje się jakby nie znalazł żadnych pasujących rekordów (cur.fetchall() jest puste), a jednak nie wyrzuca żadnego błędu typu nieistniejące tablice.
Dodam jeszcze, że to samo zapytanie odnosiło pożądany skutek jeśli użyłem go w skrypcie, w którym stworzyłem bazę danych.
W skrócie moje pytanie brzmi:
Jak mogę w moim skrypcie skorzystać z istniejącej już bazy danych utworzonej w innym skrypcie tak aby nie musiała ona być tworzona przy każdym uruchomieniu programu (chodzi o to żeby baza danych miała jakiś stan początkowy, który mógłbym edytować wewnątrz programu tak aby zmiany były zapamiętywane do kolejnych uruchomień)?
Pozdrawiam i z góry dziękuję za pomoc.