Country Python II

Question

Améliorer le programme Python ci-après  :

  • Intégrer une gestion d'exception pour la phase de connexion

  • Utiliser fetchall à la place de fetchone

  • Afficher - Île-de-France (d=999) à la place de Île-de-France 999

1
#!/usr/bin/python3
2
3
import psycopg2
4
5
conn = psycopg2.connect("dbname='mydb' user='me' host='localhost' password='secret'")
6
7
sql = "SELECT name, population/area AS density FROM region ORDER BY density DESC";
8
9
resultat = conn.cursor()
10
resultat.execute(sql)
11
12
ligne = resultat.fetchone()
13
while ligne:
14
        name = ligne[0]
15
        density = ligne[1]
16
        print(name, density)
17
        ligne = resultat.fetchone()

Solution

1
#!/usr/bin/python3
2
3
import psycopg2
4
5
try:
6
  conn = psycopg2.connect("dbname='mydb' user='me' host='localhost' password='secret'")
7
except psycopg2.OperationalError as e:
8
  print ("I am unable to connect to the database")
9
  raise(e)
10
  
11
sql = "SELECT name, population/area AS density FROM region ORDER BY density DESC";
12
13
cur = conn.cursor()
14
cur.execute(sql)
15
res = cur.fetchall()
16
for raw in res:
17
        name = raw[0]
18
        density = raw[1]
19
        print ("- %s (d=%i)" % (name, density))