Conseils

Insertion de données dans une base de données PostgreSQL

Insertion de données dans une base de données PostgreSQL

01de 07

Psycopg: Installer et importer

Le module que nous allons utiliser pour ce tutoriel est psycopg. Il est disponible à ce lien. Téléchargez-le et installez-le en suivant les instructions fournies avec le paquet.

Une fois installé, vous pouvez l'importer comme n'importe quel autre module:

# libs pour l'interface de base de données

importer psycopg

Si l'un de vos champs nécessite une date ou une heure, vous voudrez également importer le module datetime, fourni en standard avec Python.

importer date / heure02de 07

Python à PostgreSQL: Open Sesame

Pour établir une connexion à une base de données, psycopg a besoin de deux arguments: le nom de la base de données ("nombase") et le nom de l'utilisateur ("utilisateur"). La syntaxe pour ouvrir une connexion suit ce format:

= psycopg.connect ('nombase =', 'utilisateur =')

Pour notre base de données, nous utiliserons le nom de base de données 'Birds' et le nom d'utilisateur 'robert'. Pour l'objet de connexion dans le programme, utilisons la variable 'connection'. Ainsi, notre commande de connexion se lira comme suit:

connection = psycopg.connect ('dbname = Birds', 'user = robert')

Naturellement, cette commande ne fonctionnera que si les deux variables sont exactes: il doit exister une vraie base de données nommée 'Birds' à laquelle un utilisateur nommé 'robert' a accès. Si l'une de ces conditions n'est pas remplie, Python génère une erreur.

03de 07

Marquez votre place dans PostgreSQL avec Python

Ensuite, Python aime pouvoir garder une trace de son dernier passage en lecture et en écriture dans la base de données. Dans psycopg, cela s'appelle le curseur, mais nous allons utiliser la variable 'mark' pour notre programme. Nous pouvons donc construire l’affectation suivante:

mark = connection.cursor ()04de 07

Séparer la forme PostgreSQL et la fonction Python

Bien que certains formats d’insertion SQL permettent une structure de colonne comprise ou non définie, nous utiliserons le modèle suivant pour nos instructions d’insertion:

INSÉRER DANS

(colonnes) VALEURS (valeurs);

Bien que nous puissions passer une instruction dans ce format à la méthode psycopg 'execute' et insérer ainsi des données dans la base de données, cela devient rapidement compliqué et déroutant. Une meilleure solution consiste à compartimenter l'instruction séparément de la commande 'execute' comme suit:

statement = 'INSERT INTO' + table + '(' + colonnes + ') VALEURS (' + valeurs + ')'

mark.execute (statement)

De cette façon, la forme est séparée de la fonction. Une telle séparation aide souvent au débogage.

05de 07

Python, PostgreSQL et le mot 'C'

Enfin, après avoir passé les données à PostgreSQL, nous devons les valider dans la base de données:

connection.commit ()

Nous avons maintenant construit les éléments de base de notre fonction 'insert'. Ensemble, les parties ressemblent à ceci:

connection = psycopg.connect ('dbname = Birds', 'user = robert')
mark = connection.cursor ()
statement = 'INSERT INTO' + table + '(' + colonnes + ') VALEURS (' + valeurs + ')'
mark.execute (statement)
connection.commit ()06de 07

Définir les paramètres

Vous remarquerez que notre déclaration contient trois variables: table, colonnes et valeurs. Ceux-ci deviennent ainsi les paramètres avec lesquels la fonction est appelée:

def insert (table, colonnes, valeurs):

Nous devrions bien sûr suivre cela avec une chaîne de documentation:

"Fonction pour insérer les 'valeurs' du formulaire dans la table 'table'

selon les colonnes dans 'colonne "07de 07

Mettez tout cela ensemble et appelez-le

Enfin, nous avons une fonction pour insérer des données dans une table de notre choix, en utilisant des colonnes et des valeurs définies selon les besoins.

def insert (table, colonnes, valeurs):
"Fonction pour insérer les 'valeurs' du formulaire dans la table 'table'
selon les colonnes dans 'colonne "
connection = psycopg.connect ('dbname = Birds', 'user = robert')
mark = connection.cursor ()
statement = 'INSERT INTO' + table + '(' + colonnes + ') VALEURS (' + valeurs + ')'
mark.execute (statement)
connection.commit ()
revenir

Pour appeler cette fonction, il suffit de définir la table, les colonnes et les valeurs et de les transmettre comme suit:

type = "chouettes"
champs = "id, type, date"
values ​​= "17965, Chouette effraie, 2006-07-16"
insert (type, champs, valeurs)