PostgreSql et Python¶
Il existe plusieurs modules qui permettent à python de se connecter à une base de donnée PostgreSql. Un simple tour sur google permet de le voir. PyGreSQL est certainement le plus célèbre mais je préfère utiliser le module psycopg car:
- il existe pour python 2.4 à 3.2 (donc malgré le passage à python 3 le module reste le même)
- il est compatible postgresql 7.3 à 9.1
- il respecte les API database
- il est simple à installer
- ... http://initd.org/psycopg/features/
Installation¶
pour l’installer il suffit d’utiliser easy install de Pypi
easy_install psycopg2
ou après avoir télécharger le module un simple
python setup.py install
Exemple¶
les paramètres de connection sont:
- dbname – the database name (only in dsn string)
- database – the database name (only as keyword argument)
- user – user name used to authenticate
- password – password used to authenticate
- host – database host address (defaults to UNIX socket if not provided)
- port – connection port number (defaults to 5432 if not provided)
import psycopg2
conn = psycopg2.connect("dbname=test user=postgres")
cur = conn.cursor()
cur.execute("CREATE TABLE test (id serial PRIMARY KEY, num integer, data varchar);")
cur.execute("INSERT INTO test (num, data) VALUES (%s, %s)", (100, "abc'def"))
cur.execute("SELECT * FROM test;")
cur.fetchone()
conn.commit()
cur.close()
conn.close()
il est possible d’utiliser des dictionnaire comme entrée de requête
cur.execute(
"""INSERT INTO some_table (an_int, a_date, another_date, a_string)
VALUES (%(int)s, %(date)s, %(date)s, %(str)s);""",
{'int': 10, 'str': "O'Reilly", 'date': datetime.date(2005, 11, 18)})