Sivu 1/1
RATKAISTU: Python ja tietokannat
Lähetetty: 10.7.2020 klo 13.15
Kirjoittaja arttula
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:
Koodi: Valitse kaikki
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?
Re: Python ja tietokannat
Lähetetty: 10.7.2020 klo 13.28
Kirjoittaja arttula
Jatketaan vielä... Samassa ohjeessa on myös koodinpätkä, jolla avataan yhteys koneen RAM-muistiin luotavaan virtuaaliseen tietokantaan:
Koodi: Valitse kaikki
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?
Re: RATKAISTU: Python ja tietokannat
Lähetetty: 10.7.2020 klo 13.39
Kirjoittaja arttula
No joo...
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:
Koodi: Valitse kaikki
create_connection(r"Users\arttula\Documents\SQL_Databases\nimet.db")
Tuonkin olisi joku voinut kertoa minulle kuukausia sitten
Re: RATKAISTU: Python ja tietokannat
Lähetetty: 11.7.2020 klo 10.59
Kirjoittaja Delli
Re: RATKAISTU: Python ja tietokannat
Lähetetty: 18.7.2021 klo 14.55
Kirjoittaja ioxo
arttula kirjoitti: ↑10.7.2020 klo 13.39
No joo...
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:
Koodi: Valitse kaikki
create_connection(r"Users\arttula\Documents\SQL_Databases\nimet.db")
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.