Python

Python je multiplatformní jazyk oblíbený pro svou jednoduchost a stručnost. Jeho hlavní předností je srozumitelná a čistá syntaxe. Díky své jednoduchosti bývá označován jako jeden z nejvhodnějších programovacích jazyků pro začátečníky.

Odkazy na Literaturu k procvičování Pythonu, která je volně dostupná z internetu:

  • Files 1 - Trochu profesionálnějíší zdroj informací

Mám za to, že v Sqlite to funguje tak, že se soubor je vlastně zároveň databází. Odpadá tedy zbytečné zprovozňování a vytváření DB, jako to známe z MySQL a Postgres. První co uděláme je prosté vytvoření souboru s DB a přeskočíme ihned k vytváření tabulky pomocí CREATE TABLE:

#!/usr/bin/env python3
def create_table():
    import sqlite3
    ### CREATE TABLE
    conn = sqlite3.connect('db.sqlite3')
    #conn = sqlite3.connect(":memory:")
    print("Opened database successfully")

    conn.execute('''CREATE TABLE COMPANY
             (ID INT PRIMARY KEY     NOT NULL,
             NAME           TEXT    NOT NULL,
             AGE            INT     NOT NULL,
             ADDRESS        CHAR(50),
             SALARY         REAL);''')
    print("Table created successfully")
    conn.close()

if __name__ == '__main__':
    create_table()

V SQL vkládáme data do tabulek pomocí INSERT INTO:

def insert_table():
    import sqlite3
    ### INSERT
    conn = sqlite3.connect('db.sqlite3')
    print("Opened database successfully")
    conn.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
          VALUES (1, 'Paul', 32, 'California', 20000.00 )");
    conn.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
          VALUES (2, 'Allen', 25, 'Texas', 15000.00 )");
    conn.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
          VALUES (3, 'Teddy', 23, 'Norway', 20000.00 )");
    conn.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
          VALUES (4, 'Mark', 25, 'Rich-Mond ', 65000.00 )");
    conn.commit()
    print("Records created successfully")
    conn.close()

Update hodnot v tabulce provádíme opět známým příkazem UPDATE:

def update_table():
    import sqlite3
    # UPDATE
    conn = sqlite3.connect('db.sqlite3')
    print("Opened database successfully")
    conn.execute("UPDATE COMPANY set SALARY = 2000.00 where ID = 1")
    conn.commit()
    print("Total number of rows updated :%s" % (conn.total_changes))
    print("Operation done successfully")

Update hodnot v tabulce pomocí DELETE:

def delete_table():
    import sqlite3
    conn = sqlite3.connect('db.sqlite3')
    print("Opened database successfully")
    conn.execute("DELETE from COMPANY where ID = 2;")
    conn.commit()
    print("Total number of rows updated :%s" % (conn.total_changes))
    print("Operation done successfully")

Selectem vybíráme hodnoty v databázi. Používáme přitom starý známý příkaz SELECT:

def select_table():
    import sqlite3
    ### SELECT
    conn = sqlite3.connect('db.sqlite3')
    print("Opened database successfully")
    cursor = conn.execute("SELECT id, name, address, salary from COMPANY")
    for row in cursor:
       print("ID = %s" % row[0])
       print("NAME = %s" % row[1])
       print("ADDRESS = %s" % row[2])
       print("SALARY = %s\n" % row[3])
    print("Records created successfully")
    conn.close()

SQLite databázi můžeme mít v souboru, nebo v RAM. Pokud používáme paměť, začínáme připojením detabáze slovíčkem :memory:. Pokud máme DB v paměti, nevytváří se žádný soubor, ale jsme omezeni tím, že jakmile pusíme příkaz close() je databáze z paměti smazána. Použití je tedy poněkud jednorázové:

def fetchone_table():
    import sqlite3
    con = sqlite3.connect(":memory:")
    cur = con.cursor()
    cur.executescript("""
        create table samples(
            id,
            value
        );
        insert into samples(id, value)
        values (
            '123',
            'abcdef'
        );
        insert into samples(id, value)
        values (
            '111',
            '222222'
        );
        """)
    cur.execute("SELECT * from samples")
    print(cur.fetchone())
    #print(cur.fetchall())

DB můžeme zakládat trochu profesionálněji, když ušetříme vyjimky:

def newdb_sqlite():
    import sqlite3
    try:
        sqliteConnection = sqlite3.connect('sqlite.db')
        cursor = sqliteConnection.cursor()
        print("Database created and Successfully Connected to SQLite")
        sqlite_select_Query = "select sqlite_version();"
        cursor.execute(sqlite_select_Query)
        record = cursor.fetchall()
        print("SQLite Database Version is: ", record)
        cursor.close()
    except sqlite3.Error as error:
        print("Error while connecting to sqlite", error)
    finally:
        if (sqliteConnection):
            sqliteConnection.close()
            print("The SQLite connection is closed")