Creating a SQLite Database from CSV with Python

Creating a SQLite Database from CSV with Python

When it comes to data analysis, one of the most essential steps is to have the data in a structured format. Using SQLite, we can organize our data into tables and easily query and manipulate it. But what if we have our data in a CSV file? In this article, we will discuss how to create a SQLite database from a CSV file using Python.

Getting Started

First, we need to have SQLite installed. We can check if it is already installed on our system by opening a terminal and typing in the following command:

sqlite3

If it is installed, a prompt will show up, indicating that we can start executing SQLite commands. If it is not installed, we can download the appropriate version for our operating system from the SQLite download page.

Next, we need to have the SQLite3 module installed in Python. We can check if it is installed by opening a Python terminal and typing in the following command:

import sqlite3

If it is installed, no error message will show up. If it is not installed, we can install it using pip:

pip install pysqlite3

Creating a SQLite Database

Now that we have SQLite and the SQLite3 module installed, we can start creating our SQLite database.

First, let’s create a new Python script and import the SQLite3 module:

import sqlite3

Next, we need to establish a connection to the database. We can do this using the connect function from the SQLite3 module. This function takes a single argument, which is the name of the database file. If the file does not exist, it will be created.

conn = sqlite3.connect('mydatabase.db')

We can then create a cursor object using the cursor method of the connection object:

cursor = conn.cursor()

The cursor object allows us to execute SQL commands on the database. For example, we can create a table called employees with the following SQL command:

cursor.execute('''CREATE TABLE employees
                  (id INTEGER PRIMARY KEY,
                   name TEXT,
                   salary REAL)''')

This SQL command creates a table called employees with three columns: id, name, and salary. The id column is an integer and serves as the primary key for the table. The name column is a text column, and the salary column is a real column.

After executing the command, we need to commit the changes by calling the commit method of the connection object:

conn.commit()

We can then close the connection by calling the close method:

conn.close()

Our script should now look something like this:

import sqlite3

conn = sqlite3.connect('mydatabase.db')
cursor = conn.cursor()

cursor.execute('''CREATE TABLE employees
                  (id INTEGER PRIMARY KEY,
                   name TEXT,
                   salary REAL)''')

conn.commit()
conn.close()

If we run this script, it will create a new SQLite database file called mydatabase.db in the same directory as our script and create a table called employees.

Importing Data from CSV

Now that we have created our SQLite database, we can start importing data from a CSV file.

Let’s say we have a CSV file called employees.csv with the following contents:

id,name,salary
1,John Doe,50000.0
2,Jane Doe,60000.0
3,Bob Smith,70000.0

We want to import this data into our employees table in the SQLite database.

We can open the CSV file using Python’s built-in csv module and read the data into a list of tuples. Each tuple represents a row of data, and the elements of the tuple represent the values of the columns in that row.

Here’s the code to import the data from the CSV file:

import csv
import sqlite3

conn = sqlite3.connect('mydatabase.db')
cursor = conn.cursor()

# create table
cursor.execute('''CREATE TABLE IF NOT EXISTS employees
                  (id INTEGER PRIMARY KEY,
                   name TEXT,
                   salary REAL)''')

# read data from CSV file and insert into table
with open('employees.csv', 'r') as f:
    reader = csv.reader(f)
    next(reader)  # skip header row
    for row in reader:
        cursor.execute('''INSERT INTO employees (id, name, salary)
                          VALUES (?, ?, ?)''', (row[0], row[1], row[2]))

conn.commit()
conn.close()

Let’s go through this code step by step.

First, we import the csv and sqlite3 modules.

Next, we establish a connection to the SQLite database and create a cursor object.

conn = sqlite3.connect('mydatabase.db')
cursor = conn.cursor()

We then create the employees table if it does not already exist.

cursor.execute('''CREATE TABLE IF NOT EXISTS employees
                  (id INTEGER PRIMARY KEY,
                   name TEXT,
                   salary REAL)''')

The IF NOT EXISTS clause ensures that the table is only created if it does not already exist.

Next, we open the employees.csv file and read its contents using the csv.reader function. We skip the header row using the next function, as it does not contain any data.

with open('employees.csv', 'r') as f:
    reader = csv.reader(f)
    next(reader)  # skip header row

We then iterate over the remaining rows in the file and insert each row into the employees table using an INSERT SQL command. We use a tuple to pass the values of each row to the execute method of the cursor object.

for row in reader:
    cursor.execute('''INSERT INTO employees (id, name, salary)
                      VALUES (?, ?, ?)''', (row[0], row[1], row[2]))

Finally, we commit the changes to the database and close the connection.

conn.commit()
conn.close()

If we run this script, it will create the employees table (if it does not already exist) and import the data from the employees.csv file into the table.

Conclusion

In this article, we learned how to create a SQLite database from a CSV file using Python. We first created a new SQLite database and a table within it. We then imported data from a CSV file into the table using Python’s csv module and SQLite’s SQL commands. By combining these techniques, we can easily manage and manipulate structured data for our data analysis needs.

Like(0)
Python OS Module
os.accessos.chdiros.chflagos.chmodos.chownos.chrootos.closeos.closerangeos.dupos.dup2os.fchdiros.fchmodos.fchownos.fdatasyncos.fdopenos.fpathconfos.fstatos.fstatvfsos.fsyncos.ftruncateos.getcwdos.getcwdbos.isattyos.lchflagsos.lchmodos.lchownos.linkos.listdiros.lseekos.lstatos.majoros.makedevos.makedirsos.minoros.mkdiros.mkfifoos.mknodos.openos.openptyos.pathconfos.pipeos.popenos.reados.readlinkos.removeos.removedirsos.renameos.renamesos.rmdiros.statos.stat_float_timesos.statvfsos.symlink()os.tcgetpgrpos.tcsetpgrpos.ttynameos.unlinkos.utimeos.walk()os.write()os.pardir
Python Module
Python yaml modulePython argparse module
Python Tutorials
Python with UsageOs.getenv() in PythonSubtract String Lists in PythonBuilding Physical Projects with Python on the Raspberry PiIntroduction to PyOpenGL in PythonIntroduction to the pywhatkit LibraryLee Algorithm in PythonNew Features and Fixes in Python 3.11Pendulum Library in PythonPython doctest Module | Document and Test CodePython Site Connectivity Checker ProjectPython with Qt Designer: Quicker GUI Application DevelopmentRegular Expressions in PythonShould We Update the Latest Version of Python Bugfix?Some Advance Ways to Use Python DictionariesString Manipulation in Python: A Comprehensive GuideSubsets in PythonUtilize Python and Rich to Create a Wordle CloneValidating Bank Account Number Using Regular Expressions in PythonCollections in PythonCreate a GUI to extract information from VIN number Using PythonCreate XML Documents Using PythonCreating a Basic hardcoded ChatBot using Python -NLTKCreating a SQLite Database from CSV with PythonHow can I make sense of the else clause of Python loops?
Python String Module
Python String capitalize()Python String count()Python String center()Python String expandtabs()Python String index()Python String isalnum()Python String endswith()Python String encode()Python String find()Python String decode()Python String isalpha()Python String isdigit()Python String islower()Python String isnumeric()Python String isspace()Python String istitle()Python String isupper()Python String join()Python String len()Python String ljust()Python String lower()Python String lstrip()Python String maketrans()Python String max()Python String min()Python String replace()Python String rfind()Python String rindex()Python String rjust()Python String rstrip()Python String isdecimal()Python String split()Python String splitlines()Python String startswith()Python String strip() MethodPython String swapcase()Python String title()Python String translate()Python String upper()Python String zfill()
Python Math Module
Python Math exp()Python Math ceil()Python Math fabs()Python Math floor()Python Math log10()Python Math log()Python Math modf()Python Math pow()Python Math sqrt()Python Math acos() MethodPython Math asin() MethodPython Math atan() MethodPython Math atan2() MethodPython Math cos() MethodPython Math degrees() MethodPython Math hypot() MethodPython Math radians() MethodPython Math sin() MethodPython Math tan() Method
Python Random Module
Python random choice() MethodPython random random() MethodPython random randrange() MethodPython random seed() MethodPython random shuffle() MethodPython random uniform() Method
Python List Module
Python List min() MethodPython List len() MethodPython List list() MethodPython List max() Method
Python Questions
How to Check if a Dictionary is Empty in Python?How to Validate Email Address in Python with Regular ExpressionDifference Between Python and Gator AIDifference Between Tornado and TyphoonHow to Create a Null Matrix in PythonHow to Install Python on UbuntuHow to Add a column to a DataFrame in PythonHow to Add in PythonHow to Add to a Set in PythonHow to Append to a Dictionary in PythonHow to Change Python VersionHow to Check if a List is Empty in PythonHow to Check if Key Exists in Dictionary PythonHow to Check if Python is InstalledHow to Comment Multiple Lines in PythonHow to Compare Strings in Python
Python Examples
Python Program to Append (key: value) Pair to DictionaryPython Program to Define a Python Class for Complex NumbersPython Program to Implementation of Kruskal's AlgorithmPython Program to Add Elements to a DictionaryPython Program to Calculate the Symmetric Difference Between Two ListsPython Program to Check if Two Sets Are EqualPython Program to Convert List into ArrayPython Program to Create a Dictionary with a Dictionary LiteralPython Program To Find The Largest Element In A DictionaryPython Program to get first and last element from a DictionaryPython Program to Remove Null Values from a ListPython Program to Remove Null Values from a DictionaryPython Program to Replace Elements in a ListPython Program to Rotate Elements of a ListPython Program to Search an Element in a DictionaryPython Program to Print a Spiral MatrixPython Program To Add Elements To A Linked ListPython Program To Convert An Array List Into A String And ViceversaPython Program To Detect A Loop In A Linked ListPython Program To Get The Middle Element Of A Linked List In A Single IterationPython program to implement binary tree data structureCalculate the n-th discrete difference for unsigned integer arrays in PythonCalculate the n-th discrete difference in PythonCalculate the n-th discrete difference over axis 0 in PythonCalculate the n-th discrete difference over axis 1 in PythonCalculate the n-th discrete difference over given axis in PythonDifference between Data Frames and Matrices in Python PandasDifference Between Del and Remove() on Lists in PythonDifference between for loop and while loop in PythonDifference between indexing and slicing in PythonDifference Between Matrices and Arrays in Python?Difference between .pack and .configure for widgets in TkinterDifference between Python and C++Difference between Python and JavaScriptDifference between Python and LuaDifference Between range() and xrange() Functions in Python?Difference between Yield and Return in PythonWhat is the difference between arguments and parameters in Python?What is the difference between attributes and properties in python?What is the Difference between Core Python and Django Python?What is the Difference Between Freedom of Information and Information Privacy?What is the difference between Risk Acceptance and Risk Avoidance?What is the Difference Between Scala and Python?
Python3 Tutorials
Python 3 TutorialWhat is New in Python 3Python 3 - OverviewPython 3 - Environment SetupPython 3 - Basic SyntaxPython 3 - Command Line ArgumentsPython 3 - Variable TypesPython 3 - Basic OperatorsPython 3 - Arithmetic Operators ExamplePython 3 - Comparison Operators ExamplePython 3 - Assignment Operators ExamplePython 3 - Bitwise Operators ExamplePython 3 - Logical Operators ExamplePython 3 - Membership Operators ExamplePython 3 - Identity Operators ExamplePython 3 - Operators Precedence ExamplePython 3 - Decision MakingPython 3 - IF StatementPython 3 - IF...ELIF...ELSE StatementsPython 3 - Nested IF StatementsPython 3 - LoopsPython 3 - While Loop StatementsPython 3 - for Loop StatementsPython 3 - Nested Loops: A Comprehensive GuidePython 3 - break statementPython 3 - continue statementPython 3 - pass StatementPython 3 - NumbersPython 3 - Number abs() MethodPython 3 - Number ceil() MethodPython 3 - Number exp() MethodPython 3 - Number fabs() MethodPython 3 - Number floor() MethodPython 3 - Number log() MethodPython 3 - Number log10() MethodPython 3 - Number max() MethodPython 3 - Number min() MethodPython 3 - modf() MethodPython 3 - Number pow() MethodPython 3 - Number round() MethodPython 3 - Number sqrt() MethodPython 3 - Number choice() MethodPython 3 - Number randrange() MethodPython Number random() MethodPython 3 - Number seed() MethodPython 3 - Number shuffle() MethodPython 3 - Number uniform() MethodPython 3 - Number acos() MethodPython 3 - Number asin() MethodPython 3 - Number atan() MethodPython 3 - Number atan2() MethodPython 3 - Number cos() MethodPython 3 - Number hypot() MethodPython 3 - Number sin() MethodPython 3 - Number tan() MethodPython 3 - Number degrees() MethodPython 3 - Number radians() MethodPython 3 - StringsPython 3 - String capitalize() MethodPython 3 - String center() MethodPython 3 - String count() MethodPython 3 - String decode() MethodPython 3 - String encode() MethodPython 3 - String endswith() MethodPython 3 - String expandtabs() MethodPython 3 - String find() MethodPython 3 - String index() MethodPython 3 - String isalnum() MethodPython 3 - String isalpha() MethodPython 3 - String isdigit() MethodPython 3 - String islower() MethodPython 3 - String isnumeric() MethodPython 3 - String isspace() MethodPython 3 - String istitle() MethodPython 3 - String isupper() MethodPython 3 - String join() MethodPython 3 - String len() MethodPython 3 - String ljust() MethodPython 3 - String lower() MethodPython 3 - String lstrip() MethodPython 3 - String maketrans() MethodPython 3 - dictionary str() MethodPython 3 - String max() MethodPython 3 - dictionary type() MethodPython 3 - String min() MethodPython 3 - dictionary clear() MethodPython 3 - String replace() MethodPython 3 - dictionary copy() MethodPython 3 - String rfind() MethodPython 3 - dictionary fromkeys() MethodPython 3 - String rindex() MethodPython 3 - dictionary get() MethodPython 3 - String rjust() MethodPython 3 - dictionary has_key() MethodPython 3 - String rstrip() MethodPython 3 - dictionary items() MethodPython 3 - String split() MethodPython 3 - dictionary keys() MethodPython 3 - String splitlines() MethodPython 3 - Dictionary setdefault() MethodPython 3 - String startswith() MethodPython 3 - dictionary update() MethodPython 3 - String strip() MethodPython 3 - dictionary values() MethodPython 3 - String swapcase() MethodPython 3 - Date & TimePython 3 - String title() MethodPython 3 - time altzone() MethodPython 3 String translate() MethodPython 3 - time asctime() MethodPython 3 - String upper() MethodPython 3 - time clock() MethodPython 3 - String zfill() MethodPython 3 - time ctime() MethodPython 3 - String isdecimal() MethodPython 3 - time gmtime() MethodPython 3 - ListsPython 3 - time localtime() MethodPython 3 - List len() MethodPython 3 - time mktime() MethodPython 3 - List max() MethodPython 3 - time sleep() MethodPython 3 - List min() MethodPython 3 - time strftime() MethodPython 3 - List list() MethodPython 3 - time strptime() MethodPython 3 - List append() MethodPython 3 - time time() MethodPython 3 - List count() MethodPython 3 - time tzset() MethodPython 3 - List extend() MethodPython 3 - FunctionsPython 3 - List index() MethodPython 3 - ModulesPython 3 - List insert() MethodPython 3 - Files I/OPython 3 - List pop() MethodPython 3 - File MethodsPython 3 - List remove() MethodPython 3 - OS File/Directory MethodsPython 3 - List reverse() MethodPython 3 - Exceptions HandlingPython 3 - List sort() MethodPython 3 - Object OrientedPython 3 - TuplesPython 3 - Regular ExpressionsPython 3 - Tuple len() MethodPython 3 - CGI ProgrammingPython 3 - Tuple max() MethodPython 3 - MySQL Database AccessPython 3 - Tuple min() MethodPython 3 - Network ProgrammingPython 3 - Tuple tuple() MethodPython 3 - Sending Email using SMTPPython 3 - DictionaryPython 3 - Multithreaded ProgrammingPython 3 - Dictionary cmp() MethodPython 3 - XML ProcessingPython 3 - Dictionary len() MethodPython 3 - GUI Programming (Tkinter)Python 3 - Tkinter ButtonPython 3 - Tkinter CanvasPython 3 - Tkinter CheckbuttonPython 3 - Tkinter EntryPython 3 - Tkinter FramePython 3 - Tkinter LabelPython 3 - Tkinter ListboxPython 3 - Tkinter MenubuttonPython 3 - Tkinter MenuPython 3 - Tkinter MessagePython 3 - Tkinter RadiobuttonPython 3 - Tkinter ScalePython 3 - Tkinter ScrollbarPython 3 - Tkinter TextPython 3 - Tkinter ToplevelPython 3 - Tkinter SpinboxPython 3 - Tkinter PanedWindowPython 3 - Tkinter LabelFramePython 3 - Tkinter tkMessageBoxPython 3 - Tkinter DimensionsPython 3 - Tkinter ColorsPython Tkinter FontsPython 3 - Tkinter AnchorsPython 3 - Tkinter Relief stylesPython 3 - Tkinter BitmapsPython 3 - Tkinter CursorsPython 3 - Tkinter pack() MethodPython Tkinter grid() MethodPython 3 - Tkinter place() MethodPython 3 - Extension Programming with CPython 3 -File close() MethodPython 3 - File flush() MethodPython 3 - File fileno() MethodPython 3 - File isatty() MethodPython 3 - File next() MethodPython 3 - File read() MethodPython 3 - File readline() MethodPython 3 - File readlines() MethodPython 3 - File seek() MethodPython 3 - File tell() MethodPython 3 - File Truncate() MethodPython 3 - File write() MethodPython 3 - File writelines() MethodPython 3 - os.access() MethodPython 3 - os.chdir() MethodPython 3 - os.chflags() MethodPython 3 - os.chmod() MethodPython 3 - os.chown() MethodPython 3 - os.chroot() MethodPython 3 - os.close() MethodPython 3 - os.closerange() MethodPython 3 - os.dup() MethodPython 3 - os.dup2() MethodPython 3 - os.fchdir() MethodPython 3 - os.fchmod() MethodPython 3 - os.fchown() MethodPython 3 - os.fdatasync() MethodPython 3 - os.fdopen() MethodPython 3 - os.fpathconf() MethodPython 3 - os.fstat() MethodPython 3 - os.fstatvfs() MethodPython 3 - os.fsync() MethodPython 3 - os.ftruncate() MethodPython 3 - os.getcwd() MethodPython 3 - os.getcwdu() MethodPython 3 - os.isatty() MethodPython 3 - os.lchflags() MethodPython 3 - os.lchmod() MethodPython 3 - os.lchown() MethodPython 3 - os.link() MethodPython 3 - os.listdir() MethodPython 3 - os.lseek() MethodPython 3 - os.lstat() MethodPython 3 - os.major() MethodPython 3 - os.makedev() MethodPython 3 - os.makedirs() MethodPython 3 - os.minor() MethodPython 3 - os.mkdir() MethodPython 3 - os.mkfifo() MethodPython 3 - os.mknod() MethodPython 3 - os.open() MethodPython 3 - os.openpty() MethodPython 3 - os.pathconf() MethodPython 3 - os.pipe() MethodPython 3 - os.popen() MethodPython 3 - os.read() MethodPython 3 - os.readlink() MethodPython 3 - os.remove() MethodPython 3 - os.removedirs() MethodPython 3 - os.rename() MethodPython 3 - os.renames() MethodPython 3 - os.rmdir() MethodPython 3 - os.stat() MethodPython 3 - os.stat_float_times() MethodPython 3 - os.statvfs() MethodPython 3 - os.symlink() MethodPython 3 - os.tcgetpgrp() MethodPython 3 - os.tcsetpgrp() MethodPython 3 - os.tempnam() MethodPython 3 - os.tmpfile() MethodPython 3 - os.tmpnam() MethodPython 3 - os.ttyname() MethodPython 3 - os.unlink() MethodPython 3 - os.utime() MethodPython 3 - os.walk() MethodPython 3 - os.write() Method