Writing to a SQLite DB from Python Data Structures
This note demonstrates writing to a SQLite database directly from a Python data structure.
import sqlite3
db_path = 'writing-to-sqlite-db-from-python-data-structures/customers.db'
Set up Connections and Cursors
Think of the cursor as an object that you “send out to do something with the database.”
conn = sqlite3.connect(db_path)
c = conn.cursor()
Create Table
- The following statement ensures that multiple customers with the same first_name and last_name cannot be inserted. A primary key over both columns would have the same effect.
- The
IF NOT EXISTS
clause tells the database to ignore the instruction silently if the table already exists.
create_table_statement = \
'''
CREATE TABLE IF NOT EXISTS customers (
first_name text,
last_name text,
email text,
PRIMARY KEY (first_name, last_name)
)
'''
c.execute(create_table_statement)
<sqlite3.Cursor at 0x104bbe650>
Commit the changes.
conn.commit()
Close database connection.
conn.close()
Insert into Table
The OR IGNORE
clause tells the database that you want to silently ignore records that would violate the constraint.
conn = sqlite3.connect(db_path)
c = conn.cursor()
Note that there are two entries with the same first_name
and last_name
below, which would violate the primary key constraint. Note that only one entry prints in the section below.
insert_statement = \
'''
INSERT OR IGNORE INTO customers
VALUES
('Ryan', 'Wingate', '[email protected]'),
('Ryan', 'Wingate', '[email protected]')
'''
c.execute(insert_statement)
<sqlite3.Cursor at 0x104bdd030>
conn.commit()
conn.close()
Read from Table
conn = sqlite3.connect(db_path)
c = conn.cursor()
select_statement = \
'''
SELECT *
FROM customers
'''
Other alternatives to fetchall()
are fetchone()
and fetchmany(8)
.
c.execute(select_statement)
c.fetchall()
[('Ryan', 'Wingate', '[email protected]')]
conn.commit()
conn.close()
Some of this content was taken from my notes on the YouTube video called "SQLite Database With Python - #24". The channel is associated with the website codemy.com, which offers online courses in Python and Javascript, among other topics.