Python >> Tutoriel Python >  >> Python

Configuration de PostgreSQL avec Python 3 et psycopg sur Ubuntu 16.04

PostgreSQL est une puissante base de données relationnelle open source fréquemment utilisée pour créer, lire, mettre à jour et supprimer des données d'applications Web Python.Psycopg2 est un pilote de base de données PostgreSQL qui sert de client Python pour accéder au serveur PostgreSQL.Cet article explique comment installer PostgreSQL sur Ubuntu 16.04 et exécutez quelques requêtes SQL de base dans un programme Python.

Nous n'aborderons pas les mappeurs objet-relationnel (ORM) dans ce didacticiel, mais ces étapes peuvent être utilisées comme prérequis pour travailler avec un ORM tel que SQLAlchemy ou Peewee.

Outils dont nous avons besoin

Notre procédure pas à pas devrait fonctionner avec Python 2 ou 3 bien que toutes les étapes aient été testées spécifiquement avec Python 3.5. Outre l'interpréteur Python, voici les autres composants que nous utiliserons :

  • Ubuntu 16.04.2 (ces étapes devraient également fonctionner correctement avec les autres versions d'Ubuntu)
  • pip et virtualenv pour gérer la dépendance de l'application psycopg2
  • PostgreSQL

Si vous ne savez pas comment installer pip et virtualenv, passez en revue les premières étapes du guide de configuration de Python 3, Bottle et Green Unicorn sur Ubuntu 16.04 LTS.

Installer PostgreSQL

Nous allons installer PostgreSQL via le apt directeur chargé d'emballage. Il y a quelques packages dont nous avons besoin puisque nous voulons à la fois exécuter PostgreSQL et utiliser le psycopg2driver avec nos programmes Python. PostgreSQL sera également installé en tant que service système afin que nous puissions démarrer, arrêter et recharger sa configuration si nécessaire avec le service commande. Ouvrez le terminal et exécutez :

sudo apt-get install postgresql libpq-dev postgresql-client postgresql-client-common

Entrez votre sudo mot de passe lorsque vous y êtes invité et entrez "oui" lorsque apt vous demande si vous souhaitez installer les nouveaux packages.

Après quelques instants apt terminera le téléchargement, l'installation et le traitement.

Nous avons maintenant installé PostgreSQL et le service PostgreSQL s'exécute en arrière-plan. Cependant, nous devons créer un utilisateur et une instance de base de données pour vraiment commencer à l'utiliser. Utilisez le sudo commande pour basculer vers le nouveau compte "postgres".

sudo -i -u postgres

Dans le compte "postgres", créez un utilisateur depuis la ligne de commande avec le createuser commande. PostgreSQL vous posera plusieurs questions. Répondez "n" au superutilisateur et "y" aux autres questions.

createuser matt -P --interactive

Génial, nous avons maintenant un utilisateur PostgreSQL qui correspond à notre compte de connexion Ubuntu. Quittez le compte postgres en appuyant sur la touche "Ctrl" avec "d" dans le shell. Nous sommes de retour dans notre propre compte d'utilisateur.

Créez une nouvelle base de données que nous pouvons utiliser pour les tests. Vous pouvez le nommer "testpython" ou ce que vous voulez pour votre application.

createdb testpython

Nous pouvons maintenant interagir avec "testpython" via l'outil de ligne de commande PostgreSQL.

Interagir avec PostgreSQL

Le psql Le client en ligne de commande est utile pour se connecter directement à notre serveur PostgreSQL sans aucun code Python. Essayez psql en utilisant cette commande à l'invite :

psql testpython

Le client PostgreSQL se connectera au serveur localhost. Le client est maintenant prêt pour la saisie :

Essayez l'invite de commande de PostgreSQL avec des commandes telles que \dt et\dd . Nous pouvons également exécuter des requêtes SQL telles que "SELECT * from testpython", bien que cela ne nous renvoie pas encore de données car nous n'en avons inséré aucune dans la base de données. Une liste complète des commandes PostgreSQL peut être trouvée dans la documentation de psql.

Installer psycopg2

Maintenant que PostgreSQL est installé et que nous avons un compte non superutilisateur, nous pouvons installer le package psycopg2. Découvrons où se trouve notre python3 exécutable est localisé, créez un virtualenvwith python3 , activez le virtualenv puis installez le package psycopg2 avec pip . Trouvez votre python3 exécutable en utilisant le which commande.

which python3

Nous verrons une sortie comme ce qui est dans cette capture d'écran.

Créez un nouvel environnement virtuel dans votre répertoire personnel ou à l'endroit où vous stockez vos environnements virtuels Python. Spécifiez le chemin complet vers votre python3 installation.

# specify the system python3 installation
virtualenv --python=/usr/bin/python3 venvs/postgrestest

Activez l'environnement virtuel.

source ~/venvs/postgrestest/bin/activate

Ensuite, nous pouvons installer le package Python psycopg2 à partir de PyPI en utilisant le pip commande.

pip install psycopg2

Super, nous avons notre pilote PostgreSQL installé dans notre virtualenv ! Nous pouvons maintenant tester l'installation en écrivant quelques lignes de code Python.

Utiliser PostgreSQL à partir de Python

Lancez le Python REPL avec le python ou python3 commande. Vous pouvez également écrire le code suivant dans un fichier Python tel que "testpostgres.py" puis l'exécuter avec python testpostgres.py . Assurez-vous de remplacer les valeurs "utilisateur" et "mot de passe" par les vôtres.

import psycopg2

try:
    connect_str = "dbname='testpython' user='matt' host='localhost' " + \
                  "password='myOwnPassword'"
    # use our connection values to establish a connection
    conn = psycopg2.connect(connect_str)
    # create a psycopg2 cursor that can execute queries
    cursor = conn.cursor()
    # create a new table with a single column called "name"
    cursor.execute("""CREATE TABLE tutorials (name char(40));""")
    # run a SELECT statement - no data in there, but we can try it
    cursor.execute("""SELECT * from tutorials""")
    conn.commit() # <--- makes sure the change is shown in the database
    rows = cursor.fetchall()
    print(rows)
    cursor.close()
    conn.close()
except Exception as e:
    print("Uh oh, can't connect. Invalid dbname, user or password?")
    print(e)

Lorsque nous exécutons le code ci-dessus, nous n'obtenons rien d'extraordinaire, juste une liste vide imprimée. Cependant, dans ces quelques lignes de code, nous nous sommes assurés que notre connexion à notre nouvelle base de données fonctionne et nous pouvons y créer de nouvelles tables ainsi que les interroger.

C'est juste assez d'accroche pour commencer à écrire des requêtes SQL plus compliquées en utilisant psycopg2 et PostgreSQL. Assurez-vous de consulter les pages PostgreSQL, les bases de données relationnelles et les mappeurs relationnels objet (ORM) pour plus de didacticiels.

Des questions? Tweetez @fullstackpythonou publiez un message sur la page Facebook Full Stack Python.

Vous voyez quelque chose qui ne va pas dans ce message ? La source de cette page sur GitHuband soumet une pull request.