Docy

Menetrend feladat

Estimated reading: 4 minutes 0 views

Ez a Python fájl beolvassa egy „menetrend.txt” nevű szöveges fájlt, és az adatokat betölti egy „hajo.db” nevű SQLite3 adatbázisba. Ezután lekérdezi az adatbázist a „J1” azonosítóval rendelkező járatra vonatkozó információkért.

A fájl részei:

1. Osztály definíció:

				
					import sqlite3 as sqlite 


class menetrend:
    def __init__(self, sor):
        jarat, honnan, hova, indul, erkezik= sor.split('\t')
        self.jarat=jarat
        self.honnan=honnan
        self.hova=hova
        self.indul=indul
        self.erkezik=erkezik

				
			
  • Az import sqlite3 sor betölti az SQLite3 modult.
  • menetrend osztály definiál egy __init__ metódust, amely feldolgoz egy bemeneti sor-t, és az oszlopokat (jarathonnanhovaindulerkezik) attribútumokként tárolja.

2. Adatok beolvasása:

				
					lista=[]
with open('menetrend.txt', 'r', encoding='utf-8') as f:
    for sor in f.read().splitlines()[1:]:
        lista.append(menetrend(sor))

#a fájl sorai a így néznek ki

#elsősor:
#jarat	honnan	hova	indul	erkezik

#többi sor példa:
#B5	Balatonboglár	Révfülöp	14:30	14:55
#E3	Balatonfüred	Tihany	13:00	13:20
#F3	Fonyód	Badacsony	10:00	10:30
#J1	Csopak	Balatonfüred	11:20	11:45
#J1	Balatonfüred	Tihany	11:45	12:05

				
			
  • lista változó tárolja a menetrend objektumokat.
  • with blokk beolvassa a menetrend.txt fájlt, és feldolgozza az egyes sorokat.
  • splitlines() metódus feldarabolja a fájl tartalmát sorokra.
  • menetrend(sor) konstruktor meghívódik a soronkénti feldolgozáshoz.

3. Adatbázis műveletek:

				
					con = sqlite.connect('hajo.db')
cur = con.cursor();
cur.execute('DROP TABLE IF EXISTS menetrend')
con.commit()
cur.execute('''CREATE TABLE
 menetrend(azon INTEGER PRIMARY KEY AUTOINCREMENT,
 jarat TEXT, honnan TEXT, hova TEXT, indul TEXT, erkezik TEXT )''')
con.commit()

sql = 'INSERT INTO menetrend(jarat, honnan, hova, indul, erkezik) VALUES(?,?,?,?,?)'
for e in lista:
    adat = (e.jarat, e.honnan, e.hova, e.indul, e.erkezik)
    cur.execute(sql,adat)
    con.commit()

				
			
  • con változó tárolja az adatbázishoz való kapcsolódást.
  • cur változó a lekérdezések futtatására szolgál.
  • DROP TABLE IF EXISTS parancs törli a „menetrend” táblát, ha létezik.
  • CREATE TABLE parancs létrehozza a „menetrend” táblát a megadott oszlopokkal.
  • Az sql változó tárolja az INSERT parancsot.
  • for ciklus bejárja a lista elemeit, és beszúrja azokat az adatbázisba.

4. Lekérdezés:

				
					cur.execute('SELECT * FROM menetrend WHERE jarat="J1"')
for s in cur.fetchall():
    print(s)

				
			
  • SELECT * FROM menetrend WHERE jarat="J1" parancs lekérdezi azokat a sorokat a „menetrend” táblából, ahol a jarat oszlop értéke „J1”.
  • fetchall() metódus lekéri az összes találatot.
  • for ciklus bejárja a találatokat és kiírja őket.

A teljes kód:

				
					import sqlite3 as sqlite 

class menetrend:
    def __init__(self, sor):
        jarat, honnan, hova, indul, erkezik= sor.split('\t')
        self.jarat=jarat
        self.honnan=honnan
        self.hova=hova
        self.indul=indul
        self.erkezik=erkezik

lista=[]
with open('menetrend.txt', 'r', encoding='utf-8') as f:
    for sor in f.read().splitlines()[1:]:
        lista.append(menetrend(sor))

con = sqlite.connect('hajo.db')
cur = con.cursor();
cur.execute('DROP TABLE IF EXISTS menetrend')
con.commit()
cur.execute('''CREATE TABLE
 menetrend(azon INTEGER PRIMARY KEY AUTOINCREMENT,
 jarat TEXT, honnan TEXT, hova TEXT, indul TEXT, erkezik TEXT )''')
con.commit()

sql = 'INSERT INTO menetrend(jarat, honnan, hova, indul, erkezik) VALUES(?,?,?,?,?)'
for e in lista:
    adat = (e.jarat, e.honnan, e.hova, e.indul, e.erkezik)
    cur.execute(sql,adat)
    con.commit()


cur.execute('SELECT * FROM menetrend WHERE jarat="J1"')
for s in cur.fetchall():
    print(s)




				
			

Összefoglalva:

Ez a Python fájl bemutatja, hogyan lehet beolvasni egy szöveges fájlt, betölteni az adatokat egy SQLite3 adatbázisba, és lekérdezni az adatbázist.

Leave a Comment

Megosztom ezt a leírást
Tartalom