2012-01-26 30 views
27

Có một trình bao bọc cơ sở dữ liệu gọn nhẹ trong Python mà tôi có thể sử dụng cho SQLite không. Tôi muốn một cái gì đó như ORM của Django, nhưng tôi chỉ có thể trỏ đến một tập tin cơ sở dữ liệu và nó sẽ làm cho API cần thiết cho tôi (tức là xử lý tất cả các CRUD).Trình bao bọc cơ sở dữ liệu gọn nhẹ của Python cho SQLite

Trả lời

39

Yeah, SQLAlchemy là rất tốt, nhưng cũng có những lựa chọn khác. Một trong số đó là Peewee. Rất nhẹ và nó có thể phù hợp hoàn hảo với những gì bạn đang tìm kiếm.

https://github.com/coleifer/peewee

+2

peewee hy vọng sẽ đưa bạn đến đó. nếu bạn đã có một cơ sở dữ liệu, có một kịch bản "pwiz" sẽ tạo ra mã mẫu: http://charlesleifer.com/blog/model-code-generation-peewee/ – coleifer

+0

peewee đơn giản và dễ sử dụng. –

+0

peewee là tốt. –

11

SQLAlchemy có thể là những gì bạn đang tìm kiếm.

http://www.sqlalchemy.org/

+7

có bất kỳ điều gì phức tạp đến nỗi khủng khiếp không? – Puzzled79

+0

Lâu đời nhất và mạnh mẽ, nhưng có vẻ phức tạp và không tốt nhất trong nhà phát triển thân thiện. nhưng kỹ năng deverlopment khó đòi hỏi phải so sánh với Peewee. –

3

Chắc chắn peewee. Tôi đã thử sqlalchemy nhưng nó là một mớ hỗn độn và không có phép thuật.

Các ORM khác không phát triển hay không tốt như SQLobject, Elixir (lớp trên đầu sqlalchemy), PonyORM. Peewee là tốt nhất mà tôi đã nhìn thấy cho đến nay trong cộng đồng python, và nó gần gũi hơn với các ORM chính cho ruby ​​hoặc cho php.

Peewee cũng có nhiều đá quý, giống như shortcut số này

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

rằng Automagically mất người có tên 'Foo Bar' từ DB nếu nó tồn tại, nếu không nó tạo ra nó.

+0

Khung chính xác, đơn giản hơn tốt hơn –

+0

Sau khi làm việc trong một năm với SQLAlchemy, tôi có thể nói rằng đó là khuôn khổ phát triển tốt nhất hiện tại.Tôi sẽ không xem xét bất kỳ khuôn khổ nào khác khi tôi phải làm việc với SQL. – Alessio

0

Bạn có thể thanh toán RabaDB. Nó được cho là một trong những giao diện đơn giản nhất hiện có.

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') 

Nó được tối ưu hóa để tiêu thụ ít bộ nhớ, hỗ trợ truy vấn bằng ví dụ, kế thừa, có công cụ gỡ lỗi và thậm chí cho phép bạn quay trở lại SQL nếu cần.

+0

Không tài liệu rõ ràng, cũng không rõ ràng trình diễn phức tạp nhất định. –

+0

Tôi không đồng ý. Các github readme chứa khá nhiều tất cả mọi thứ bạn cần biết để sử dụng nó. Lên đến gỡ lỗi, giao dịch và thậm chí là thừa kế. Nếu bạn quan tâm đến sự phức tạp và biểu diễn, nó phụ thuộc nhiều vào phiên bản của SQLite. Tuy nhiên, không có gì được giữ bí mật ở đây. Bạn có thể dễ dàng in các truy vấn SQL bằng conn.enableQueryPrint (True) (cf. readme). Nếu bạn muốn xem xét các lược đồ, các tệp .db có thể được mở bằng bất kỳ trình khách SQLite nào và bạn có thể sử dụng giải thích của SQLite để có cái nhìn tốt hơn về các buổi biểu diễn tùy thuộc vào phiên bản SQLite của bạn. – tariqdaouda

+0

Dường như bạn không đồng ý với kiến ​​thức nhỏ của bạn, hãy xem cách duy trì tài liệu. https://github.com/coleifer/peewee và cũng có thể http://docs.peewee-orm.com/en/latest/, thêm vài mẫu chúng tôi không thể nói rõ tài liệu. Bạn có thể kết hợp tài liệu của nó, nhưng nó chỉ chiếm 2% tài liệu hoàn chỉnh. Chỉ cần nhìn thấy ngày nay không có một ngã ba hoặc đánh giá cao RabaDb libs, tôi có thể xem xét bạn không đồng ý là cá nhân của bạn. Nhưng RabaDB vẫn yếu hơn sử dụng. –

Các vấn đề liên quan