Skip to content
Snippets Groups Projects
Commit 74d5053f authored by Sebastien's avatar Sebastien
Browse files

monetdb dashboard sample

parent 8b90eec0
No related branches found
No related tags found
No related merge requests found
%% Cell type:markdown id: tags:
## Affichage des données
%% Cell type:code id: tags:
``` python
import pymonetdb
# set up a connection. arguments below are the defaults
connection = pymonetdb.connect(username="monetdb", password="monetdb",
hostname="localDB", database="db")
# create a cursor
cursor = connection.cursor()
# increase the rows fetched to increase performance (optional)
cursor.arraysize = 100
# execute a query (return the number of rows to fetch)
res=cursor.execute('SELECT * FROM tables')
if (res > 0):
print('Successfully connected to localDB with default credentials, please change the monetdb password by running docker-compose exec localDB -d monetdb-r /root/set-monetdb-password.sh <password>')
from bokeh.plotting import figure, output_file, show
from bokeh.models import ColumnDataSource
import pandas as pd
import numpy as np
import panel as pn
pn.extension(comms='ipywidgets')
def create_connection():
return pymonetdb.connect(username="monetdb", password="monetdb",
hostname="localDB", database="db")
def checkTableExists(dbcon, tablename):
dbcur = dbcon.cursor()
dbcur.execute("""
SELECT COUNT(*)
FROM tables
WHERE name = '{0}'
""".format(tablename.replace('\'', '\'\'')))
if dbcur.fetchone()[0] == 1:
dbcur.close()
return True
dbcur.close()
return False
def get_sql_script_content(filename):
sql_script_file = open(filename, "r")
sql_script_content = sql_script_file.read()
sql_script_file.close()
return sql_script_content
def execute_file_script(dbcon, filename):
sql_script_content = get_sql_script_content(filename)
execute_moneydb_script(connection, sql_script_content)
dbcon.command(sqlscript)
connection.commit()
def create_database():
execute_file_script(connection, "naissances.sql")
def execute_db_command(connection, sql_command):
# create a cursor
cursor = connection.cursor()
# increase the rows fetched to increase performance (optional)
cursor.arraysize = 100
# execute the query
cursor.execute(sql_command)
# fetch results
result = cursor.fetchall()
# close cursor
cursor.close()
return result
def get_db_data(connection, y_axis):
return execute_db_command(connection, 'SELECT annee, {} FROM naissances'.format(y_axis))
condb = create_connection()
if checkTableExists(condb, "naissances") == False:
create_database(condb)
condb.close()
selector = pn.widgets.Select(name='y axis values', options=['nombre', 'taux'])
# fetch data
@pn.depends(selector.param.value)
def getplot(y_axis):
connection = create_connection()
data=get_db_data(connection, y_axis)
if y_axis == 'nombre':
y_axis_name='Nombre de naissance'
else:
y_axis_name='Taux de naissance'
df = pd.DataFrame(np.array(data), columns = [ 'annee', y_axis])
plot = figure(x_axis_label='annee',
y_axis_label=y_axis_name,
title="Naissances en france depuis 1982")
plot.line('annee', y_axis, source=df)
connection.close()
return plot
#graph
pn.Column(selector, getplot).servable()
#pn.panel(graph)
```
%% Output
Successfully connected to localDB with default credentials, please change the monetdb password by running docker-compose exec localDB -d monetdb-r /root/set-monetdb-password.sh <password>
%% Cell type:code id: tags:
``` python
```
Column
[0] Select(name='y axis values', options=['nombre', 'taux'], value='nombre')
[1] ParamFunction(function)
......
-- drop table if necessary
drop table if exists naissances cascade;
create table naissances(annee int, nombre bigint, taux real);
insert into naissances values
(2019,753000,11.2),
(2018,758590,11.3),
(2017,769553,11.5),
(2016,783640,11.8),
(2015,798948,12.0),
(2013,811510,12.3),
(2012,821047,12.6),
(2011,823394,12.7),
(2010,832799,12.9),
(2009,824641,12.8),
(2008,828404,12.9),
(2007,818705,12.8),
(2006,829352,13.1),
(2005,806822,12.8),
(2004,799361,12.8),
(2003,793044,12.8),
(2002,792745,12.9),
(2001,803234,13.1),
(2000,807405,13.3),
(1999,775796,12.9),
(1998,767906,12.8),
(1997,757384,12.7),
(1996,764028,12.8),
(1995,759058,12.8),
(1994,740774,12.5),
(1993,741306,12.6),
(1992,774755,13.2),
(1991,790078,13.5),
(1990,793071,13.6),
(1989,796101,13.8),
(1988,800560,13.9),
(1987,795790,13.9),
(1986,805543,14.2),
(1985,796138,14.1),
(1984,787429,14.0),
(1983,775441,13.8),
(1982,823260,14.8);
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment