Your Page Title
🔍

    Connect SQLite with Python

    Connecting SQLite with Python is relatively easy since SQLite is an integral part of Python standard library. Below is step-by-step explanation of how to connect SQLite with Python and do some basic operations.

    Step 1: Import the sqlite3 Module

    SQLite support in Python is provided through the sqlite3 module. You need to import this module to use SQLite functionalities.

    import sqlite3

    Step 2: Connect to a Database

    Use the sqlite3.connect() method to create a connection to an SQLite database file. If the file does not exist, SQLite will automatically create it.

    # Connect to the database (or create it if it doesn't exist)
    connection = sqlite3.connect('example.db')
    
    # For in-memory database (temporary, disappears when program ends)
    # connection = sqlite3.connect(':memory:')

    Step 3: Create a Cursor Object

    A cursor is used to execute SQL commands. Create a cursor object using the connection.cursor() method.

    # Create a cursor object
    cursor = connection.cursor()

    Step 4: Create a Table

    You can create a table using an SQL CREATE TABLE statement executed through the cursor.

    # Create a table (if it doesn't already exist)
    cursor.execute('''
    CREATE TABLE IF NOT EXISTS users (
        id INTEGER PRIMARY KEY,
        name TEXT NOT NULL,
        age INTEGER
    )
    ''')

    Step 5: Insert Data

    To insert data into a table, use the INSERT INTO SQL command. You can insert data dynamically by passing parameters.

    # Insert data into the table
    cursor.execute('INSERT INTO users (name, age) VALUES (?, ?)', ('Alice', 25))
    cursor.execute('INSERT INTO users (name, age) VALUES (?, ?)', ('Bob', 30))

    For multiple records, use executemany():

    # Insert multiple records
    data = [('Charlie', 35), ('Diana', 28)]
    cursor.executemany('INSERT INTO users (name, age) VALUES (?, ?)', data)

    Step 6: Retrieve Data

    To fetch data from the database, use SELECT queries. The fetchall() or fetchone() methods can retrieve data.

    # Retrieve all data
    cursor.execute('SELECT * FROM users')
    rows = cursor.fetchall()
    
    # Display the results
    for row in rows:
        print(row)

    Step 7: Update or Delete Data

    You can update or delete records using the UPDATE or DELETE SQL commands.

    # Update a record
    cursor.execute('UPDATE users SET age = ? WHERE name = ?', (26, 'Alice'))
    
    # Delete a record
    cursor.execute('DELETE FROM users WHERE name = ?', ('Bob',))

    Step 8: Commit Changes

    After executing commands that modify the database (like INSERT, UPDATE, or DELETE), you need to commit the changes using connection.commit().

    # Commit the changes
    connection.commit()

    Step 9: Close the Connection

    Always close the connection when you’re done to free up resources.

    # Close the connection
    connection.close()

    Full Example Code

    Here’s a complete example putting everything together:

    import sqlite3
    
    # Step 1: Connect to the database
    connection = sqlite3.connect('example.db')
    cursor = connection.cursor()
    
    # Step 2: Create a table
    cursor.execute('''
    CREATE TABLE IF NOT EXISTS users (
        id INTEGER PRIMARY KEY,
        name TEXT NOT NULL,
        age INTEGER
    )
    ''')
    
    # Step 3: Insert data
    cursor.execute('INSERT INTO users (name, age) VALUES (?, ?)', ('Alice', 25))
    cursor.executemany('INSERT INTO users (name, age) VALUES (?, ?)', [('Bob', 30), ('Charlie', 35)])
    
    # Step 4: Fetch and display data
    cursor.execute('SELECT * FROM users')
    rows = cursor.fetchall()
    for row in rows:
        print(row)
    
    # Step 5: Update data
    cursor.execute('UPDATE users SET age = ? WHERE name = ?', (26, 'Alice'))
    
    # Step 6: Delete data
    cursor.execute('DELETE FROM users WHERE name = ?', ('Bob',))
    
    # Commit and close
    connection.commit()
    connection.close()

    Key Points to Remember

    • Parameterized Queries: Always use placeholders (?) in queries to prevent SQL injection.
    • Error Handling: Use try-except blocks to handle potential errors (e.g., file permission issues or syntax errors).
    • Database File: SQLite stores all of this in a single file- example.db.
    • Concurrency: SQLite allows multiple connections but has limitations on concurrent writes.