16h00 - Fil rouge « SGBD »

Navigation rapide : Lundi / Mardi / Mercredi / Jeudi / Vendredi Mémos : Perl / Python / Ruby

SGBD

1

Se connecter à une base sqlite3

correction

1: import sqlite3
2: db=sqlite3.connect('labintel.sqlite3')
3: c=db.cursor()
4: ...
5: db.commit()
6: db.close()


2

Créer une table nommée « pers » ayant deux colonnes « p_numero_sel et name » de type Chaine de caractères

correction

c.execute('''
CREATE TABLE pers (
        id INT PRIMARY KEY,
        p_numero_sel STRING,
        name STRING)
''')


Créer une table nommée « pers_attr » ayant trois colonnes « pers_id, attribute et value » de type Chaine de caractères

correction

c.execute('''
CREATE TABLE pers_attr (
        id INT PRIMARY KEY,
        pers_id STRING,
        attribute STRING,
        value STRING)
''')


3

Peupler la table « pers » à partir du fichier « pers.yaml ».

pers.yaml

---
- id: 1
  p_numero_sel: '1234567890'
  name: 'davinci'
- id: 2
  p_numero_sel: '3456789012'
  name: 'watson'

correction

 1: import yaml
 2:
 3: source_yaml=open('pers.yaml')
 4: personnes=yaml.load(source_yaml.read())
 5:
 6: valeurs=[]
 7: for item in personnes:
 8:     valeurs.append(
 9:         [
10:           item['id'],
11:           item['p_numero_sel'],
12:           item['name']
13:         ]
14:     )
15:
16: c.executemany('INSERT INTO pers (id,p_numero_sel,name) VALUES (?,?,?)',valeurs)
17: db.commit()


4

Peupler la table « pers_attr » à partir du fichier « pers_attr.json ».

pers_attr.json

[{
    "id":        1,
    "pers_id":    1,
    "attribute":    "email",
    "value":    "leonardo@vinci-closluce.com"
},{
    "id":        2,
    "pers_id":    1,
    "attribute":    "labo",
    "value":    "umrxyz"
}]

correction

 1: import json
 2:
 3: source_json=open('pers_attr.json')
 4: personnes=json.load(source_json)
 5: valeurs=[]
 6:
 7: for item in personnes:
 8:         valeurs.append(
 9:         [
10:             item['id'],
11:             item['pers_id'],
12:             item['attribute'],
13:             item['value']
14:         ]
15:     )
16:
17: c.executemany('INSERT INTO pers_attr (id,pers_id,attribute,value) VALUES (?,?,?,?)',valeurs)
18: db.commit()


5

Lister toutes les entrées de la table pers

correction

1: c.execute('SELECT * FROM pers')
2: for line in c:
3:     print(line)

6

Lister toutes les entrées de la table pers_attrs

correction

1: c.execute('SELECT * FROM pers_attr')
2: for line in c:
3:     print(line)

7

Pour chaque entrée de la table « pers » lister toutes les entrées associées de la table « pers_attr »

correction

1: c.execute("""SELECT attr.id,attr.pers_id,attr.attribute,attr.value
2:     FROM pers_attr AS attr LEFT JOIN pers ON pers.id=attr.pers_id""")
3: for line in c:
4:         print line

8

ajouter un attribut « statut=chercheur » à la personne ayant l'id 1

correction

1: c.execute("""INSERT INTO pers_attr (pers_id,attribute,value)
2:         VALUES (?,?,?)""", (1,'statut','chercheur'))

9

ajouter une contrainte d'unicité sur l'attribut « statut »

10

lister toutes les personnes ayant le statut de chercheurs

correction

1: c.execute('SELECT pers.id,name FROM pers,pers_attr WHERE pers.id=pers_id AND value = "chercheur"')
2: for line in c:
3:     print line

Version

$Id: mardi_corrige_python_1.txt 631 2012-05-22 16:19:54Z aicardi $

mardi_corrige_python_1.txt · Last modified: 2012/05/22 18:19 (external edit)
 
Except where otherwise noted, content on this wiki is licensed under the following license: CC Attribution-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki