2012-01-26 27 views

Respuesta

39

Sí, SQLAlchemy es grande, pero también hay otras opciones. Uno de ellos es Peewee. Muy ligero y puede encajar perfectamente con lo que estás buscando.

https://github.com/coleifer/peewee

+2

peewee con suerte debería llevarlo allí. si ya tiene una base de datos, existe un script "pwiz" que también generará el código del modelo: http://charlesleifer.com/blog/model-code-generation-peewee/ – coleifer

+0

peewee simplemente fácil y rápido de usar. –

+0

peewee es bueno. –

11

SQLAlchemy es lo que estás buscando.

http://www.sqlalchemy.org/

+7

¿hay algo que no es tan terriblemente compleja? – Puzzled79

+0

Es más antiguo y fuerte, pero parece complicado y no es el mejor de los desarrolladores amigables. sin embargo, se requieren habilidades de desarrollo difíciles en comparación con Peewee. –

3

Definitivamente peewee. Intenté con sqlalchemy pero es un desastre y no hay magia.

Otros ORM no están más desarrollados o no son tan buenos, como SQLobject, Elixir (capa encima de sqlalchemy), PonyORM. Peewee es lo mejor que he visto hasta ahora en la comunidad de Python, y está más cerca de los ORM principales para ruby ​​o para php.

Peewee también tienen muchas gemas, al igual que este acceso directo puñado

Person.get_or_create(name='Foo', surname='Bar') 

que automagicamente tomar la persona nombrada 'Foo Bar' de la base de datos si es que existe, de lo contrario, la crea.

+0

Marco correcto, simplicidad más mejor –

+0

Después de trabajar durante un año con SQLAlchemy, puedo decir que es el marco mejor desarrollado en este momento.No consideraría ningún otro marco cuando tenga que trabajar con SQL. – Alessio

0

Puede finalizar la compra RabaDB. Podría decirse que es una de las interfaces más simples que hay.

class Human(R.Raba) : 
     _raba_namespace = 'test_namespace' 

     #Everything that is not a raba object is primitive 
     name = rf.Primitive() 
     age = rf.Primitive() 
     city = rf.Primitive() 

     #Only Cars can fit into this relation 
     cars = rf.Relation('Car') 

     #best friend can only be a human 
     bestFriend = rf.RabaObject('Human') 

Está optimizado tener poco consumo de memoria, que soporta consultas mediante ejemplos, la herencia, dispone de herramientas de depuración e incluso permite que usted se caiga de nuevo en SQL si es necesario.

+0

No está bien documentado, tampoco muestra demostraciones claras de complejidad. –

+0

Bueno, no estoy de acuerdo. El readme de github contiene prácticamente todo lo que necesitas saber para usarlo. Hasta la depuración, las transacciones e incluso la herencia. Si está interesado en la complejidad y el rendimiento, depende en gran medida de la versión de SQLite. Sin embargo, nada se mantiene en secreto aquí. Puede imprimir fácilmente las consultas SQL con conn.enableQueryPrint (True) (consulte readme). Si desea ver los esquemas, los archivos .db se pueden abrir con cualquier cliente SQLite, y puede usar la explicación de SQLite para obtener una mejor visión de las interpretaciones dependiendo de su versión de SQLite. – tariqdaouda

+0

Parece que no está de acuerdo con su pequeño conocimiento, vea cómo mantener el documento. https://github.com/coleifer/peewee y también http://docs.peewee-orm.com/en/latest/, agregando algunas muestras que no podemos decir que estén bien documentadas. Es posible que conisder su documento, pero solo el 2% de la documentación completa. Simplemente, vea hoy en día que no hay una sola horquilla o RabaDb libs de alta calificación, puedo considerar que su desacuerdo es su personal. Pero RabaDB aún débil sobre la utilización. –

Cuestiones relacionadas