Oubliez SQL avec SQLAlchemy Pycon.fr 2009 Michael Scherer.

Slides:



Advertisements
Présentations similaires
Créer une base de données MySQL
Advertisements

Créer une base de données MySQL Et création de tables, enregistrements, interaction avec PHP.
Faculté I&C, Claude Petitpierre, André Maurer Bases de données SQL (Structured Query Language)
Développement d’applications web
Faculté I&C, Claude Petitpierre, André Maurer Bases de données SQL (Structured Query Language)
PHP & My SQL.
PostgreSQL – Présentation
G.KEMBELLEC - UP81 Master 2 THYP Cas pratique d’utilisation De simpleXML Un lecteur de RSS Novembre 2009.
Les Bases de Données orientées Objet (BDO)
Java et les bases de données Etat de l’art 14 juin 2012.
GCstar Gestionnaire de collections personnelles Christian Jodar (Tian)
Système de gestion d'entrées pour un cinéma Scanvion Michel – Etudiant 4.
Les ORMs ● Faire coexister le monde relationnel et objet.
1- Introduction 1ère partie Le langage SQL 2- Connexion 3- Structure & Contenu 4- Requêtes.
SQL partie 5 1 LMD create – update – primary key secondary key.
1 UML: applications, études de cas ● Processus (Extreme Programming, Unified Process) ● Architectures ● Expression du besoin technique Conception Préliminaire.
1 Programmation en C++ C++ de base ● Programme C++ ● Variables, objets, types ● Fonctions ● Namespace ● Tests ● Boucles ● Pointeurs, références.
WIKITTY Base de données orientée documents et API de persistance pour Java.
Présentation python : Épisode 3 ● Comment programmer comme un gentilhomme ? ● Le style de code ou comment bien présenter ● Les test unitaires ou comment.
Les Bases de données Définition Architecture d’un SGBD
Cross-Plateform Cours JavaScript
POWER QUERY Les FONCTIONS.
Framework EHop/Ecenvir
Le CMS Joomla La mise en place du CMS est inscrite dans le dossier d’homologation Attente : avoir une plateforme commune de travail et de publication.
LimeSurvey : Logiciel Open Source pour réaliser des enquêtes
Construire des requêtes
Environnement du développement de BD ORACLE REPORTS 10g
ملخص Initiation à la sgbdr
Bases de données multimédia
Intégration du P7 dans l’épreuve E41
Pas de variable globale
SOMMAIRE 1: ORALE 2: Les 3 systèmes de gestion de base de donnés 3:ORACLE DATA BASE 4:MY SQL 5:Oppen Office.org Base 6:Concurrence Conclusion.
Marc Cousin Meetup PostgreSQL Nantes 8 mars 2017
Le « Bugtracking » Alejandro FERNANDEZ – Etienne FONTEIX
Base de données: Généralité IFT6800 Jian-Yun Nie.
L'ORM d'OpenERP Mercredi 15 décembre 2010.
Outils de gestion documentaire
Installation et Configuration Internet Information Server (IIS 5)
Présentation python : Épisode 3
Profils d’emplois JT du 24 septembre 2001
Cissé Moussa Diawara Issif Master Informatique 2ième année
D5 – Travailler en réseau, communiquer et collaborer
SQL LID – INTERROGATIN DES DONNEES
Août 2009.
Introduction BD TABLES ET DONNÉES champs OU données, types de données
PROGRAMMATION INFORMATIQUE D’INGÉNIERIE II
Présentation python : Épisode 3
Présentation de frameworks J2EE 1 LIU Sizhao LUO Xin MALICK MANDENGUE Serge.
I Copyright © 2004, Oracle. Tous droits réservés. Introduction.
Bases de données sous Access. Initiation aux bases de données  Structure d’une base de données.
1. LE LANGAGE SQL DDL Version 2 - Janvier Le langage SQL-DDL
Programmation PHP / PDO
Info Bases de données avancées
Schéma de conception Factory Method Exemple
TP1 - DBMAIN BFSH Lausanne - Switzerland - Tel Université de Lausanne.
Compléments sur Python (EduPython)
© Robert Godin. Tous droits réservés.
STREAMS (et fichiers).
Lecture/Écriture de fichiers (I/O)
LUSTRE Integration to SRM
Tableau de bord d’un système de recommandation
© Robert Godin. Tous droits réservés.
COURS ADMINISTRATION DE BASES DE DONNÉES IMPORT/EXPORT Karim LABIDI ISET Ch
1. LE LANGAGE SQL DDL Version 1 - Mai 2009 corrigé le 11/2/2011
Systèmes d’Information et Application
Bases de données Singleton pour la connexion
ScienceDirect Guide d’utilisation de la base de données : ScienceDirect Pr R. EL OUAHBI.
Business Intelligence en ACube OLAP et Reporting avec ACubeOLAP et GRaM.
LINQ. LINQ (Language-Integrated Query) est une nouveauté du.NET Framework 3.5 C’est le nom d’un ensemble de technologies basé sur l’intégration de fonctions.
Transcription de la présentation:

Oubliez SQL avec SQLAlchemy Pycon.fr 2009 Michael Scherer

Origine Ordinateur : Appareil électronique capable [...] d’effectuer des traitements automatisés de données

Stockage ? ● XML ● Structure binaire ● Json ● Fichiers et répertoire ● Objets

SQL ● Très utilisé dans le monde ● Gestion de données par table ● Schéma de description des données

SQL et Python PEP 0249

Problème de SQL

Standard ? Un champ avec un auto incrément

Mysql CREATE TABLE animals ( id INT NOT NULL AUTO_INCREMENT, name TEXT, PRIMARY KEY (id) );

SQLite CREATE TABLE animals( id INTEGER PRIMARY KEY, name TEXT );

Postgresql CREATE TABLE animals( id SERIAL, name TEXT );

Oracle, Firebird, MS-SQL, etc

SQL Différences dans les types

SQL Différences dans les fonctions

ORM Object Relational Mapper

Avantages Ne pas avoir à connaitre SQL

Avantages Couche d'abstraction

Avantages Portabilité entre les divers SGBD

Avantages Portabilité entre les différentes versions d'un SGDB

Avantages Gestion de plus haut niveau

Avantages Protection contre les attaques de type SQL injection

Exemples d'ORM Active Record ( Ruby ) Class::DBIx ( Perl ) Hibernate ( Java )

Exemples d'ORM python Storm L'orm de Django SQL Object SQL Alchemy

En vrac ● Version ● Date de 2006 ● Licence MIT ● lignes de code python

Utilisé par ● Trac ● Pagoda ●.... ● Reddit.com ● Virgin Charter

Support des SGBDs ● SQLite ● MySQL ● PostgreSQL ● Oracle ● Firebird ● MS-SQL ●...

Problèmes des ORMs

Cache la base de données

Faux ● Accès direct possible via la requête de son choix ● Possibilité de voir le SQL généré à l'utilisation

Force l'usage d'un dénominateur commun

Faux ● Utilisation de types spécifiques possible ● PgInet ● MSBigInteger ● Ajout de types personnalisés

Mauvais pour les performances

Faux ● Chargement paresseux ( lazy loading ) ● Chargement avide ( eager load ) ● Possibilité d'utiliser sa propre requête SQL optimisé ● Génération de SQL via un moteur d'optimisation ● Utilisation d'un pool de requêtes

If all you have is a hammer everything starts to look like a nail

Guide rapide

Déclarer la base from sqlalchemy import create_engine engine = create_engine( 'sqlite:///:memory:' )

Déclarer les tables metadata = MetaData() animals = Table('animals', metadata, Column('id', Integer, primary_key = True), Column('name', String(30), nullable = False), )

Création des tables metadata.create_all(engine)

Creation des classes class Animal(object): def __init__(self, name): self.name = name def __repr__(self): return " " % self.name

Lien entre table et objet from sqlalchemy.orm import mapper mapper(animals, Animal)

Connexion à la base from sqlalchemy.orm import sessionmaker session = sessionmaker(bind=engine)

Ajout d'un objet castor = animal('Victor') session.add(castor) # envoi vers la base session.commit()

Requêtes

Utilisation de Query >>> for a in session.query(Animal):... print a.name Victor

Filtrage >>> session.query(Animal).filter( Animal.name.like('V%')).first() Victor

Filtrage Utilisation proche de Python ● Slices -> LIMIT OFFSET ● Possibilités de chainer les filtres comme des appels de fonctions

Trucs avancés

Utilisation de pickle Stockage d'objet python directement dans la base

Héritage Formalise l'héritage dans la base

Système de cache Possibilité de s'insérer dans le moteur de requêtes

Sharding Répartition des données sur plusieurs bases

Migrate Gestion des changements de schémas

Elixir Couche déclarative au dessus de SQLAlchemy

elixir.ext.versionned Gestion automatique de version des objets

elixir.ext.list Simule une structure de liste

elixir.ext.encrypted Chiffrage à la volée des entrées

?