Buy Me a Coffee? Your support is much appreciated!



demo.py

import sqlite3
import pandas as pd # pip install pandas

# Create a database
connection = sqlite3.connect('student.db')
# connection = sqlite3.connect(':memory:')

# Create a table
sql_create_table = """
CREATE TABLE students (
    student_id TEXT PRIMARY KEY,
    student_name TEXT NOT NULL,
    gender TEXT,
    major TEXT,
    year_enrolelr INTEGER,
    email TEXT UNIQUE
)
"""
cursor = connection.cursor()
try:
    cursor.execute(sql_create_table)
    connection.commit()
except Exception as e:
    print(e)
    connection.rollback()


# Insert records
cursor = connection.cursor()
cursor.execute("INSERT INTO students VALUES ('A10011','student_name1','M','Computer Science',2022,'email11@gmail.com')")
cursor.execute("INSERT INTO students VALUES ('A10013','student_name3','M','English',2018,'email13@gmail.com')")
cursor.execute("INSERT INTO students VALUES ('A10012','student_name2','F','Biology',2021,'email12@gmail.com')")
cursor.execute("INSERT INTO students VALUES ('A10014','student_name4','M','Accounting',2018,'email14@gmail.com')")
cursor.execute("INSERT INTO students VALUES ('A10015','student_name5','F','Marketing',2019,'email15@gmail.com')")
cursor.execute("INSERT INTO students VALUES ('A10016','student_name6','F','Sociology',2022,'email16@gmail.com')")
connection.commit()

# Query records
sql_query = """
SELECT * FROM students LIMIT 5
"""
rows = cursor.execute(sql_query)
columns = [col[0] for col in rows.description]
records = rows.fetchall()
connection.close()
print(columns)
print(records)

df = pd.DataFrame(records, columns=columns)
print(df.to_csv('data.csv'))

# Using WITH statement to auto close connections
from contextlib import closing
import sqlite3
import pandas as pd # pip install pandas

with closing(sqlite3.connect('demo.db')) as connection2:
    with closing(connection.cusor()) as cursor2:
        cursor2.execute("INSERT INTO students VALUES ('A10001','student_name1','M','Computer Science',2022,'email1@gmail.com')")
        cursor2.execute("INSERT INTO students VALUES ('A10003','student_name3','M','English',2018,'email3@gmail.com')")
        cursor2.execute("INSERT INTO students VALUES ('A10002','student_name2','F','Biology',2021,'email2@gmail.com')")
        cursor2.execute("INSERT INTO students VALUES ('A10004','student_name4','M','Accounting',2018,'email4@gmail.com')")
        cursor2.execute("INSERT INTO students VALUES ('A10005','student_name5','F','Marketing',2019,'email5@gmail.com')")
        cursor2.execute("INSERT INTO students VALUES ('A10006','student_name6','F','Sociology',2022,'email6@gmail.com')")
        connection.commit()

        rows2 = cursor2.execute()
        columns2 = [col[0] for col in rows2.description]
        records2 = rows.fetchall()
        df = pd.DataFrame(records, columns=columns)
print(df)