#!/usr/bin/env python
# coding: utf-8
#
#
#
#
#
#
#
#
#
#
#
# # 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()