Apprenez-en plus avec les robots d'exploration Python (quatre, ORM et peewee)

1. Pourquoi utiliser ORM

  • Isolez les différences entre la base de données et la version de la base de données
  • Facile à maintenir
  • ORM fournira l'injection anti-sql et d'autres fonctions
  • L'appel de passage variable est plus facile
  • ORM devient de plus en plus populaire

Deuxièmement, le choix de l'ORM

Cadre avantage Désavantage
Pee Wee L'API de style Django le rend facile à utiliser et léger, et facile à intégrer à n'importe quel framework Web Ne prend pas en charge la migration de schéma automatisée. Les requêtes plusieurs-à-plusieurs ne sont pas intuitives à écrire
SQLObject Utilise un mode ActiveRecord facile à comprendre; une base de code relativement petite La dénomination des méthodes et des classes suit le petit style de cas de chameau de Java; l'unité de travail d'isolation de session de base de données n'est pas prise en charge
Tempête API rafraîchissante et légère, courbe d'apprentissage courte et maintenabilité à long terme; pas de constructeurs de classe spéciaux, pas de classes de base nécessaires Forcer les programmeurs à écrire manuellement les instructions DDL créées par la table, au lieu de dériver automatiquement de la classe de modèle; les contributeurs Storm doivent donner à Canonical le droit d'auteur de leurs contributions
ORM de Django Facile à utiliser, courbe d'apprentissage courte; étroitement intégré à Django et utiliser des méthodes conventionnelles pour faire fonctionner la base de données lors de l'utilisation de Django Il est difficile de gérer des requêtes complexes, obligeant les développeurs à revenir au SQL natif; étroitement intégré à Django, ce qui rend son utilisation difficile en dehors de l'environnement Django
SQLAlchemy L'API au niveau de l'entreprise rend le code robuste et adaptable; la conception flexible facilite l'écriture de requêtes complexes Le concept d'unité de travail n'est pas courant; API lourde, conduisant à une longue courbe d'apprentissage

Nous avons choisi peeweece framework pour apprendre car il est simple, flexible et la méthode de déclaration est proche de l'ORM de django. Et le nombre d'étoiles est élevé, l'activité est élevée et la qualité des documents est élevée.

Document officiel: http://docs.peewee-orm.com/en/latest/

Trois, utilisation peewee

1. Installation

Basculez vers l'environnement virtuel et installez

pip install peewee

2. Créer et utiliser

from peewee import *

db = MySQLDatabase("py_spider", host="localhost", port=3307, user="root", password="root")


class Person(Model):
    name = CharField()
    birthday = DateField()

    class Meta:
        database = db  # This model uses the "people.db" database.


if __name__ == "__main__":
    db.create_tables([Person])  # 根据模型创建数据表

La table de données générée, le nom de la table par défaut est le nom de la classe et un champ ID (clé primaire) est ajouté par défaut:
Insérez la description de l'image ici

Table des types de champs (base de données et table de correspondance des champs de modèle)

Type de champ Sqlite Postgresql MySQL
AutoField entier en série entier
BigAutoField entier grande série bigint
IntegerField entier entier entier
BigIntegerField entier bigint bigint
SmallIntegerField entier smallint smallint
IdentityField non supporté identité int non supporté
FloatField réel réel réel
DoubleField réel double precision double precision
DecimalField décimal numérique numérique
CharField varchar varchar varchar
FixedCharField carboniser carboniser carboniser
Champ de texte texte texte texte
BlobField goutte bytea goutte
BitField entier bigint bigint
BigBitField goutte bytea goutte
UUIDField texte uuid varchar (40)
BinaireUUIDField goutte bytea varbinaire (16)
DateTimeField datetime horodatage datetime
DateField Date Date Date
TimeField temps temps temps
TimestampField entier entier entier
IPField entier bigint bigint
BooleanField entier booléen booléen
BareField non typé non supporté non supporté
ForeignKeyField entier entier entier

3. Ajouter, supprimer, vérifier et modifier

(1) Ajouter

if __name__ == "__main__":
    # db.create_tables([Person])  # 创建数据表
    from datetime import date
    # 生成数据
    bob = Person(name="Bob", birthday=date(2020, 12, 12))
    # 新增数据到数据库
    bob.save()

Insérez la description de l'image ici

(2) Requête de données

if __name__ == "__main__":
    # 只查询一条数据  get方法在取不到数据会抛出异常,需try catch
    Bob = Person.select().where(Person.name == 'Bob').get()
    print(Bob.name)     # Bob
    print(Bob.birthday)     # 2020-12-12
    # 同上
    Bob2 = Person.get(Person.name == 'Bob')
    print(Bob2.name)    # Bob
    print(Bob2.birthday)    # 2020-12-12

    # 查询多条数据
    Bobs = Person.select().where(Person.name == 'Bob')
    for b in Bobs:
        print(b.name)
        print(b.birthday)

(3) Modifier les données

if __name__ == "__main__":
    from datetime import date
    # 修改数据
    Bobs = Person.select().where(Person.name == 'Bob')
    for b in Bobs:
        b.birthday = date(1997, 10, 16)
        b.save() # 在没有数据的时候新增,存在的时候修改

Insérez la description de l'image ici

(4) Supprimer les données

if __name__ == "__main__":
    # 删除数据
    Bobs = Person.select().where(Person.name == 'Bob')
    for b in Bobs:
        b.delete_instance()
        

Insérez la description de l'image ici

Je suppose que tu aimes

Origine blog.csdn.net/zy1281539626/article/details/111243785
conseillé
Classement