La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Oubliez SQL avec SQLAlchemy Pycon.fr 2009 Michael Scherer.

Présentations similaires


Présentation au sujet: "Oubliez SQL avec SQLAlchemy Pycon.fr 2009 Michael Scherer."— Transcription de la présentation:

1 Oubliez SQL avec SQLAlchemy Pycon.fr 2009 Michael Scherer

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

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

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

5 SQL et Python PEP 0249

6 Problème de SQL

7 Standard ? Un champ avec un auto incrément

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

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

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

11 Oracle, Firebird, MS-SQL, etc

12 SQL Différences dans les types

13 SQL Différences dans les fonctions

14 ORM Object Relational Mapper

15 Avantages Ne pas avoir à connaitre SQL

16 Avantages Couche d'abstraction

17 Avantages Portabilité entre les divers SGBD

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

19 Avantages Gestion de plus haut niveau

20 Avantages Protection contre les attaques de type SQL injection

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

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

23

24 En vrac ● Version 0.5.4 ● Date de 2006 ● Licence MIT ● 75 000 lignes de code python

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

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

27 Problèmes des ORMs

28 Cache la base de données

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

30 Force l'usage d'un dénominateur commun

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

32 Mauvais pour les performances

33 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

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

35 Guide rapide

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

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

38 Création des tables metadata.create_all(engine)

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

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

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

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

43 Requêtes

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

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

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

47 Trucs avancés

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

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

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

51 Sharding Répartition des données sur plusieurs bases

52 Migrate Gestion des changements de schémas

53 Elixir Couche déclarative au dessus de SQLAlchemy

54 elixir.ext.versionned Gestion automatique de version des objets

55 elixir.ext.list Simule une structure de liste

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

57 ?


Télécharger ppt "Oubliez SQL avec SQLAlchemy Pycon.fr 2009 Michael Scherer."

Présentations similaires


Annonces Google