In this tutorial, we're going to show how you can use a select query, and iterate through it, to get data that you can make use of. In this example, we're going to generate a Matplotlib graph. Check out that tutorial regarding how to get Matplotlib if you do not already have it.
Code up to this point:
import sqlite3 import time import datetime import random conn = sqlite3.connect('tutorial.db') c = conn.cursor() def create_table(): c.execute("CREATE TABLE IF NOT EXISTS stuffToPlot(unix REAL, datestamp TEXT, keyword TEXT, value REAL)") def data_entry(): c.execute("INSERT INTO stuffToPlot VALUES(1452549219,'2016-01-11 13:53:39','Python',6)") conn.commit() c.close() conn.close() def dynamic_data_entry(): unix = int(time.time()) date = str(datetime.datetime.fromtimestamp(unix).strftime('%Y-%m-%d %H:%M:%S')) keyword = 'Python' value = random.randrange(0,10) c.execute("INSERT INTO stuffToPlot (unix, datestamp, keyword, value) VALUES (?, ?, ?, ?)", (unix, date, keyword, value)) conn.commit() time.sleep(1) def read_from_db(): c.execute('SELECT * FROM stuffToPlot') data = c.fetchall() print(data) for row in data: print(row) c.execute('SELECT * FROM stuffToPlot WHERE value = 3') data = c.fetchall() print(data) for row in data: print(row) c.execute('SELECT * FROM stuffToPlot WHERE unix > 1452554972') data = c.fetchall() print(data) for row in data: print(row) c.execute('SELECT value, datestamp FROM stuffToPlot WHERE unix > 1452554972') data = c.fetchall() print(data) for row in data: print(row[0]) read_from_db() c.close conn.close()
Now we will make another function, called graph_data
:
def graph_data(): c.execute('SELECT datestamp, value FROM stuffToPlot') data = c.fetchall() dates = [] values = [] for row in data: dates.append(parser.parse(row[0])) values.append(row[1]) plt.plot_date(dates,values,'-') plt.show()
In this example, we're grabbing the datestamp, and the value from the table. From there, we're iterating through the return to popluate a dates
and values
list. After that, we use Matplotlib to plot the data. This means we probably need to import Matplotlib! Add the following to the top:
import matplotlib.pyplot as plt import matplotlib.dates as mdates from dateutil import parser from matplotlib import style style.use('fivethirtyeight')
Run that, and you should get a graph like:
Your graph will be a different line, since our numbers were randomly generated.
Next, we're going to cover how to modify existing data and how to delete from the database table.