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.