Jatkan edelleen kompurointiani Pythonin parissa (monettakohan vuotta? ). SQLiten saitin ohjeiden mukaisesti copy-pastesin seuraavan koodinpätkän, jolla yritän avata yhteyden olemassaolevaan pieneen tietokantaan:
import sqlite3
from sqlite3 import Error
def create_connection(db_file):
""" create a database connection to a SQLite database """
conn = None
try:
conn = sqlite3.connect(db_file)
print(sqlite3.version)
except Error as e:
print(e)
finally:
if conn:
conn.close()
if __name__ == '__main__':
create_connection(r"Users/arttula/Documents/SQL_Databases/nimet.db")
Mutta vaan ei!!! Aina tulee virhe "unable to open database file". Eri modifikaatioita olen kokeillut satoja kertoja. Tuo nimet.db on olemassa (SQLite -tietokanta, jonka loin SQLiteStudiolla), ja polku tuonne kansioon on tarkistettu monta kertaa.
Mitä nyt oikein missaan?
Viimeksi muokannut arttula, 10.7.2020 klo 13.37. Yhteensä muokattu 1 kertaa.
Maailmassa on vain kolmenlaisia ihmistyyppejä:
Sellaisia, jotka osaavat laskea, ja sellaisia, jotka eivät osaa.
import sqlite3
from sqlite3 import Error
def create_connection():
""" create a database connection to a database that resides
in the memory
"""
conn = None;
try:
conn = sqlite3.connect(':memory:')
print(sqlite3.version)
except Error as e:
print(e)
finally:
if conn:
conn.close()
if __name__ == '__main__':
create_connection()
Käytännössä siis sama koodinpätkä, mutta tuo levypolku puuttuu. Tuo koodi toimii hyvin. Eli vika lienee jossain tiedoston polun määrittelyssä? Vai?
Maailmassa on vain kolmenlaisia ihmistyyppejä:
Sellaisia, jotka osaavat laskea, ja sellaisia, jotka eivät osaa.
Näinkin tyhmä juttu, että poiketen Macin tavasta esittää kansiopolku, tuonne piti laittaa eteenpäin nojaavien kautta-viivojen sijaan kenoviivat taakse päin. Eli näin:
Näinkin tyhmä juttu, että poiketen Macin tavasta esittää kansiopolku, tuonne piti laittaa eteenpäin nojaavien kautta-viivojen sijaan kenoviivat taakse päin. Eli näin:
Tuonkin olisi joku voinut kertoa minulle kuukausia sitten
Tästä viestistä on nyt toki aikaa, mutta selvennettäköön tuota...
Yllämainittu skripti tekee skriptin ajohakemistoon(?) tiedoston nimeltä "Users\arttula\SQL_Databases\nimet.db" (tiedostonimi siis sisältää nuo kenoviivat), jos halutaan että tiedostonimi on nimet.db niin tällöin tuohon kannattaa joko kirjoittaa create_connection("./nimet.db") tai ("nimet.db") jos halutaan että on absoluuttinen polku niin create_connection("/Users/arttula/SQL_Databases/nimet.db"). En tiedä miten tuo suhtautuu jos hakemistoa (esim. SQL_Databases) ei ole olemassa, pitänee luoda ekaksi hakemisto. Mutta tuo kenoviiva (\) ei siis unix maailmassa vastaa hakemistopolkua kuten kauttaviiva (/). Tuon toki voinee kiertää pythonissa kikka kakkosilla, mutta lienee vaivalloista.