#!/usr/bin/env python # coding: utf-8 # Open In Colab #

# # #

# # #

# # # # # Python alapok SQL db használat (Sqlite) # # # # # --- # # SqLite használata # # ## Kapcsolódás az adatbázishoz # In[ ]: ## Modulok impontálása import sqlite3 import os import hashlib # ## Belső függvények létrehozása # In[ ]: ## Belső függveny eljárások definiálása def collate_reverse(string1, string2): if string1 == string2: return 0 elif string1 < string2: return 1 else: return -1 ## hashlib.md5 / hashlib.sha224 /// Titkosítás GDPR!!! def md5sum(t): if type(t) == int: t = str(t) t = t.encode() return hashlib.md5(t).hexdigest() def sha224sum(t): if type(t) == int: t = str(t) t = t.encode() return hashlib.sha224(t).hexdigest() # ## Memoria adatbázis, tábla használati módszer # In[ ]: ## Memoria adatbázis / tábla használata sqlite3.enable_shared_cache(True) ### con = sqlite3.connect(":memory:") con.isolation_level = None con.create_collation("reverse", collate_reverse) ## fuggvény használat con.create_function("md5", 1, md5sum) cur = con.cursor() cur.execute("select md5(?)", ("foo",)) print(cur.fetchone()[0]) cur.execute("create table test(x)") cur.executemany("insert into test(x) values (?)", [("a",), ("b",), ("d",) , ("c",)]) ## cur.execute("select x from test order by x collate reverse") cur.execute("select x from test order by x asc") print('---- Kiíratás 0. ----\n') for row in cur: print(row) con.close() # ## SQLite állomány adatbázis használata # In[ ]: ## Állomány adatbázis DB_FILE = "/content/sample_data/mydb.db" # adatbázis neve newdb=0 ## Új adatbázis akkor 1 legyen késöbb if os.path.exists(DB_FILE ): ## adatbázis állomány már létezik akkor törlésse # os.remove(DB_FILE) ## törlésd végrehajtása # newdb = 1 print('Törölve') con = sqlite3.connect(DB_FILE) ## ha nem létezik létrehozza (de ürsen) def md5sum(t): if type(t) == int: t = str(t) t = t.encode() return hashlib.md5(t).hexdigest() con.create_function("md5", 1, md5sum) ## beső fögvény használata/meghívása cur = con.cursor() if newdb == 1 : ## Ha új adatbázis akkor a táblát létrekell hozni cur.execute(""" create table people ( name_last varchar(20), age integer) """) ## Rekordok beszúrása / INSERT közvetlen megadással cur.execute("insert into people (name_last, age) values ('Lajos', 57)") cur.execute("insert into people (name_last, age) values ('Béla', 53)") cur.execute("insert into people (name_last, age) values ('Ildikó', 54)") newPeople = ( ('Dani' , 22), ('Tomi' , 21) ) for person in newPeople: cur.execute("insert into people (name_last, age) values (?, ?)", person) con.commit() ## Beírás véglegesítése ##----------------- print('---- Kiíratás 11 ----\n') cur.execute("select * from people ") for row in cur: for mezo in row: print(mezo) print('---- Kiíratás 2. ----\n') cur.execute("select * from people ") for row in cur: print('%s is %d years old.' % (row[0], row[1])) ## print("Most törlök ", cur.execute("delete from people where name_last = 'Tomi' ").rowcount, "rekordot/sort.") print('---- Kiíratás 3. ----\n') cur.execute(" select name_last, age, md5(name_last) as name_md5 from people ") print("with column names:", cur.fetchone()[0]) print("with column names:", cur.fetchone()) print(cur.fetchall()) ## Összes további kiíratása print('---- Kiíratás 4. ----\n') FIELD_MAX_WIDTH = 20 ## mezők maximális hossz beállítása cur.execute(" select name_last, age, md5(name_last) as name_md5 from people ") # Fejléc for fieldDesc in cur.description: print(fieldDesc[0].ljust(FIELD_MAX_WIDTH), end=' ') print() # Fejléc vége print('-' * 78) # elválasztó sor # For each row, print the value of each field left-justified within # the maximum possible width of that field. fieldIndices = range(len(cur.description)) for row in cur: for fieldIndex in fieldIndices: fieldValue = str(row[fieldIndex]) print(fieldValue.ljust(FIELD_MAX_WIDTH), end=' ') print() # kiíratás végén sorvégjel kitétele cur.close() con.close() # ## Táblák lekérdezése # In[ ]: DB_FILE = "/content/sample_data/flights_information.db" # adatbázis neve #DB_FILE = "/content/sample_data/mydb.db" # adatbázis neve con = sqlite3.connect(DB_FILE) ## ha nem létezik létrehozza cur = con.cursor() # cur.execute("select * from airports where id <= 10; ") # print(cur.fetchall()) ## Összes további kiíratása print('---- Kiíratás 11 ----\n') cur.execute("SELECT * FROM sqlite_master WHERE type='table'") print('\n---- Tábla infó kiíratás 1. ----\n') for row in cur: for mezo in row: print(mezo) print('\n---- Verzió kiíratás 2. ----\n') cur.execute('select sqlite_version();') for row in cur: for mezo in row: print(mezo) cur.close() con.close() # In[ ]: import sqlite3 DB_FILE = "/content/sample_data/mydb.db" # adatbázis neve con = sqlite3.connect(DB_FILE) ## ha nem létezik létrehozza cur = con.cursor() newdb=0 con.create_function("md5", 1, md5sum) cur = con.cursor() if newdb == 1 : ## Ha új adatbázis akkor a táblát léátrekell hozni cur.execute(""" create table people ( name_last varchar(20), age integer) """) ## Rekordok beszúrása / INSERT cur.execute("insert into people (name_last, age) values ('Lajos', 57)") cur.execute("insert into people (name_last, age) values ('Béla', 53)") cur.execute("insert into people (name_last, age) values ('Ildikó', 54)") con.commit() ## Beírás véglegesítése # cur.execute(" SELECT * FROM sqlite_master WHERE type='table' ") cur.execute(" SELECT * FROM people WHERE 1=1 ") for row in cur: for mezo in row: print(mezo) cur.close() con.close()