SQLite 3
B. Select/Update/Delete - 2020
This chapter is a continuation from Connecting to DB, create/drop table, and insert data into a table.
In the previous chapter, we had the following output when we used the sqlite shell command line:
$ sqlite3 test.db sqlite> .tables books sqlite> .mode column sqlite> .headers on sqlite> SELECT * FROM books; id title author price year ---------- --------------- ---------- ---------- ----------- 1 Learning Python Mark Lutz $36.19 Jul 6, 2013 2 Two Scoops of D Daniel Gre $34.68 Feb 1, 2014 3 Python Cookbook David Beaz $30.29 May 29, 201 4 The Quick Pytho Naomi R. C $16.39 Jan 15, 201 5 Python Testing David Sale $38.20 Sep 2, 2014 sqlite>
To retrieve data, we need to execute the query against the cursor object and then use fetchone() to retrieve a single row or fetchall() to retrieve all the rows.
>>> cursor.execute('''SELECT title, author, price FROM books''') <sqlite3.Cursor object at 0x7f1d2717d650> >>> book1 = cursor.fetchone() >>> print book1 (u'Learning Python', u'Mark Lutz', u'$36.19') >>> print(book1[0]) Learning Python >>> all_cols = cursor.fetchall() >>> print all_cols [(u'Two Scoops of Django: Best Practices For Django 1.6', u'Daniel Greenfeld', u'$34.68'), (u'Python Cookbook', u'David Beazley', u'$30.29'), (u'The Quick Python Book', u'Naomi R. Ceder', u'$16.39'), (u'Python Testing', u'David Sale', u'$38.20')] >>> for col in all_cols: ... print('{0} : {1}, {2}'.format(col[0], col[1], col[2])) ... Two Scoops of Django: Best Practices For Django 1.6 : Daniel Greenfeld, $34.68 Python Cookbook : David Beazley, $30.29 The Quick Python Book : Naomi R. Ceder, $16.39 Python Testing : David Sale, $38.20
The cursor object works as an iterator, invoking fetchall() automatically:
>>> cursor.execute('''SELECT title, author, price, year FROM books''') <sqlite3.Cursor object at 0x7f1d2717d650> >>> for col in cursor: ... # col[0] returns the first column in the query (title), col[1] returns author column. ... print('{0} : {1}, {2}, {3}'.format(col[0], col[1], col[2], col[3])) ... Learning Python : Mark Lutz, $36.19, Jul 6, 2013 Two Scoops of Django: Best Practices For Django 1.6 : Daniel Greenfeld, $34.68, Feb 1, 2014 Python Cookbook : David Beazley, $30.29, May 29, 2013 The Quick Python Book : Naomi R. Ceder, $16.39, Jan 15, 2010 Python Testing : David Sale, $38.20, Sep 2, 2014
We can use the ? placeholder to retrieve data with conditions:
>>> book_id = 3 >>> cursor.execute('''SELECT title, author, price FROM books WHERE id=?''',(book_id,)) <sqlite3.Cursor object at 0x7f1d2717d650> >>> book = cursor.fetchone() >>> print(book) (u'Python Cookbook', u'David Beazley', u'$30.29')
Now, we want to update data in the table. Let's switch the price of the 4th book (id = 4).
>>> newPrice = '$19.99' >>> book_id = 4 >>> cursor.execute('''UPDATE books SET price = ? WHERE id = ?''', (newPrice, book_id)) <sqlite3.Cursor object at 0x7f1d2717d650>
We can check if the price of the 4th (book_id = 4) book has been updated from $16.39 to $19.99:
>>> cursor.execute('''SELECT title, author, price FROM books''') <sqlite3.Cursor object at 0x7f1d2717d650> >>> all_books = cursor.fetchall() >>> print(all_books) [(u'Learning Python', u'Mark Lutz', u'$36.19'), (u'Two Scoops of Django: Best Practices For Django 1.6', u'Daniel Greenfeld', u'$34.68'), (u'Python Cookbook', u'David Beazley', u'$30.29'), (u'The Quick Python Book', u'Naomi R. Ceder', u'$19.99'), (u'Python Testing', u'David Sale', u'$38.20')]
>>> delete_book_id = 5 >>> cursor.execute('''DELETE FROM books WHERE id = ?''', (delete_book_id,)) <sqlite3.Cursor object at 0x7f1d2717d650> >>> db.commit()
Let's check the last boot (id = 5) is gone:
>>> cursor.execute('''SELECT title, author, price FROM books''') <sqlite3.Cursor object at 0x7f1d2717d650> >>> print(cursor.fetchall()) [(u'Learning Python', u'Mark Lutz', u'$36.19'), (u'Two Scoops of Django: Best Practices For Django 1.6', u'Daniel Greenfeld', u'$34.68'), (u'Python Cookbook', u'David Beazley', u'$30.29'), (u'The Quick Python Book', u'Naomi R. Ceder', u'$19.99')]
Yes, it's not there anymore.
more
Python tutorial
Python Home
Introduction
Running Python Programs (os, sys, import)
Modules and IDLE (Import, Reload, exec)
Object Types - Numbers, Strings, and None
Strings - Escape Sequence, Raw String, and Slicing
Strings - Methods
Formatting Strings - expressions and method calls
Files and os.path
Traversing directories recursively
Subprocess Module
Regular Expressions with Python
Regular Expressions Cheat Sheet
Object Types - Lists
Object Types - Dictionaries and Tuples
Functions def, *args, **kargs
Functions lambda
Built-in Functions
map, filter, and reduce
Decorators
List Comprehension
Sets (union/intersection) and itertools - Jaccard coefficient and shingling to check plagiarism
Hashing (Hash tables and hashlib)
Dictionary Comprehension with zip
The yield keyword
Generator Functions and Expressions
generator.send() method
Iterators
Classes and Instances (__init__, __call__, etc.)
if__name__ == '__main__'
argparse
Exceptions
@static method vs class method
Private attributes and private methods
bits, bytes, bitstring, and constBitStream
json.dump(s) and json.load(s)
Python Object Serialization - pickle and json
Python Object Serialization - yaml and json
Priority queue and heap queue data structure
Graph data structure
Dijkstra's shortest path algorithm
Prim's spanning tree algorithm
Closure
Functional programming in Python
Remote running a local file using ssh
SQLite 3 - A. Connecting to DB, create/drop table, and insert data into a table
SQLite 3 - B. Selecting, updating and deleting data
MongoDB with PyMongo I - Installing MongoDB ...
Python HTTP Web Services - urllib, httplib2
Web scraping with Selenium for checking domain availability
REST API : Http Requests for Humans with Flask
Blog app with Tornado
Multithreading ...
Python Network Programming I - Basic Server / Client : A Basics
Python Network Programming I - Basic Server / Client : B File Transfer
Python Network Programming II - Chat Server / Client
Python Network Programming III - Echo Server using socketserver network framework
Python Network Programming IV - Asynchronous Request Handling : ThreadingMixIn and ForkingMixIn
Python Coding Questions I
Python Coding Questions II
Python Coding Questions III
Python Coding Questions IV
Python Coding Questions V
Python Coding Questions VI
Python Coding Questions VII
Python Coding Questions VIII
Python Coding Questions IX
Python Coding Questions X
Image processing with Python image library Pillow
Python and C++ with SIP
PyDev with Eclipse
Matplotlib
Redis with Python
NumPy array basics A
NumPy Matrix and Linear Algebra
Pandas with NumPy and Matplotlib
Celluar Automata
Batch gradient descent algorithm
Longest Common Substring Algorithm
Python Unit Test - TDD using unittest.TestCase class
Simple tool - Google page ranking by keywords
Google App Hello World
Google App webapp2 and WSGI
Uploading Google App Hello World
Python 2 vs Python 3
virtualenv and virtualenvwrapper
Uploading a big file to AWS S3 using boto module
Scheduled stopping and starting an AWS instance
Cloudera CDH5 - Scheduled stopping and starting services
Removing Cloud Files - Rackspace API with curl and subprocess
Checking if a process is running/hanging and stop/run a scheduled task on Windows
Apache Spark 1.3 with PySpark (Spark Python API) Shell
Apache Spark 1.2 Streaming
bottle 0.12.7 - Fast and simple WSGI-micro framework for small web-applications ...
Flask app with Apache WSGI on Ubuntu14/CentOS7 ...
Fabric - streamlining the use of SSH for application deployment
Ansible Quick Preview - Setting up web servers with Nginx, configure enviroments, and deploy an App
Neural Networks with backpropagation for XOR using one hidden layer
NLP - NLTK (Natural Language Toolkit) ...
RabbitMQ(Message broker server) and Celery(Task queue) ...
OpenCV3 and Matplotlib ...
Simple tool - Concatenating slides using FFmpeg ...
iPython - Signal Processing with NumPy
iPython and Jupyter - Install Jupyter, iPython Notebook, drawing with Matplotlib, and publishing it to Github
iPython and Jupyter Notebook with Embedded D3.js
Downloading YouTube videos using youtube-dl embedded with Python
Machine Learning : scikit-learn ...
Django 1.6/1.8 Web Framework ...
Ph.D. / Golden Gate Ave, San Francisco / Seoul National Univ / Carnegie Mellon / UC Berkeley / DevOps / Deep Learning / Visualization