Pour une raison quelconque, dans la zone qiita, sqlalchemy est une option (561 recherches, 161 balises), mais il y en a d'autres, non? Naturellement, il y en avait.
Les deux sont des requêtes et se caractérisent par une description assez particulière. À première vue, je ne sais pas lequel fonctionne, python / DB. Suis-je influencé par linq?
coleifer/peewee: a small, expressive orm -- supports postgresql, mysql and sqlite peewee — peewee 3.13.3 documentation
from peewee import *
import datetime
db = SqliteDatabase('my_database.db')
class BaseModel(Model):
class Meta:
database = db
class User(BaseModel):
username = CharField(unique=True)
class Tweet(BaseModel):
user = ForeignKeyField(User, backref='tweets')
message = TextField()
created_date = DateTimeField(default=datetime.datetime.now)
is_published = BooleanField(default=True)
query = (Facility
.select(Facility.facid, Facility.name, Facility.membercost,
Facility.monthlymaintenance)
.where(
(Facility.membercost > 0) &
(Facility.membercost < (Facility.monthlymaintenance / 50))))
Certains dehors
La partie très caractéristique et déroutante est qu'il accepte la syntaxe du générateur python3 directement dans la requête, et si vous définissez la relation n: m, il créera une table intermédiaire sans autorisation.
from pony.orm import *
db = Database()
class MyEntity(db.Entity):
attr1 = Required(str)
select(c for c in Customer if sum(c.orders.price) > 1000)
SELECT "c"."id"
FROM "customer" "c"
LEFT JOIN "order" "order-1"
ON "c"."id" = "order-1"."customer"
GROUP BY "c"."id"
HAVING coalesce(SUM("order-1"."total_price"), 0) > 1000
Recommended Posts