{ "info": { "author": "Tyler Long", "author_email": "tyler4long@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Web Environment", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Operating System :: OS Independent", "Programming Language :: Python", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "quick_orm\r\n=========\r\n- **News**: quick_orm is fully compatible with the newest SQLAlchemy 0.7.9.\r\n- **Notice**: quick_orm is NOT YET compatible with SQLAlchemy 0.8.x.\r\n\r\n\r\n|\r\n\r\nIntroduction\r\n------------\r\nPython ORM framework which enables you to get started in less than a minute!\r\n\r\nSuper easy to setup and super easy to use, yet super powerful!\r\n\r\nYou would regret that you didn't discorver it earlier!\r\n\r\n\r\n|\r\n\r\nFeatures\r\n--------\r\n- quick: you could get and play with it in less than a minute. It couldn't be more straightforward.\r\n- easy: you don't have to write any SQL statements, including those \"create table xxx ...\" ones.\r\n- simple: the core code counts only 217 lines including comments and pydocs, there is no room for bugs.\r\n- free: released under BSD license, you are free to use it and distribute it.\r\n- powerful: built upon SQLAlchemy and doesn't compromise its power.\r\n- support relationships by means of python decorators.\r\n- support table inheritance in a most natural way.\r\n- support multiple databases: you can map your models to many databases without difficulty.\r\n- write less, do more: taking advantage of python metaclass reduces data modeling code dramatically.\r\n- long-term maintained: Continous efforts are taken to improve and maintain it.\r\n\r\n\r\n|\r\n\r\nQuick Start\r\n-----------\r\n\r\n::\r\n\r\n pip install quick_orm\r\n\r\nRefer to the following examples to write your own database manipulation code.\r\n\r\n\r\n|\r\n\r\nHello World example\r\n-------------------\r\n\r\n::\r\n\r\n from quick_orm.core import Database\r\n from sqlalchemy import Column, String\r\n \r\n __metaclass__ = Database.DefaultMeta\r\n \r\n class User:\r\n name = Column(String(30))\r\n \r\n Database.register()\r\n \r\n if __name__ == '__main__':\r\n db = Database('sqlite://') # database urls: http://docs.sqlalchemy.org/en/latest/core/engines.html#database-urls\r\n db.create_tables() # create tables, you don't have to write any SQL.\r\n \r\n user = User(name = 'Hello World')\r\n db.session.add_then_commit(user) # commit user to database.\r\n \r\n user = db.session.query(User).get(1)\r\n print 'My name is', user.name\r\n print 'created_at', user.created_at # created_at and updated_at timestamps are added automatically.\r\n print 'updated_at', user.updated_at\r\n \r\n user.name = 'Tyler Long'\r\n db.session.commit() # commit changes to database.\r\n print 'My name is', user.name\r\n print 'created_at', user.created_at\r\n print 'updated_at', user.updated_at\r\n\r\n\r\n|\r\n\r\nMany-to-one relationship example\r\n--------------------------------\r\n\r\n::\r\n\r\n from quick_orm.core import Database\r\n from sqlalchemy import Column, String, Text\r\n \r\n __metaclass__ = Database.DefaultMeta\r\n \r\n class Question:\r\n title = Column(String(70))\r\n content = Column(Text)\r\n \r\n @Database.many_to_one(Question)\r\n class Answer:\r\n content = Column(Text)\r\n \r\n Database.register()\r\n \r\n if __name__ == '__main__':\r\n db = Database('sqlite://')\r\n db.create_tables()\r\n \r\n question = Question(title = 'What is quick_orm?', content = 'What is quick_orm?')\r\n answer = Answer(question = question, content = 'quick_orm is a Python ORM framework which enables you to get started in less than a minute!')\r\n db.session.add_then_commit(answer)\r\n \r\n question = db.session.query(Question).get(1)\r\n print 'The question is:', question.title\r\n print 'The answer is:', question.answers.first().content\r\n\r\n\r\n|\r\n\r\nMany-to-one relationship options example\r\n----------------------------------------\r\n\r\n::\r\n\r\n from quick_orm.core import Database\r\n from sqlalchemy import Column, String, Text\r\n \r\n __metaclass__ = Database.DefaultMeta\r\n \r\n class Question:\r\n title = Column(String(70))\r\n content = Column(Text)\r\n \r\n @Database.many_to_one(Question, ref_name = 'question', backref_name = 'answers')\r\n class Answer:\r\n content = Column(Text)\r\n \r\n Database.register()\r\n \r\n if __name__ == '__main__':\r\n db = Database('sqlite://')\r\n db.create_tables()\r\n \r\n question = Question(title = 'What is quick_orm?', content = 'What is quick_orm?')\r\n answer = Answer(question = question, content = 'quick_orm is a Python ORM framework which enables you to get started in less than a minute!')\r\n db.session.add_then_commit(answer)\r\n \r\n question = db.session.query(Question).get(1)\r\n print 'The question is:', question.title\r\n print 'The answer is:', question.answers.first().content\r\n\r\n\r\n|\r\n\r\nMany-to-one relationship with oneself example\r\n---------------------------------------------\r\n\r\n::\r\n\r\n from quick_orm.core import Database\r\n from sqlalchemy import Column, String\r\n \r\n __metaclass__ = Database.DefaultMeta\r\n \r\n @Database.many_to_one('Node', ref_name = 'parent_node', backref_name = 'children_nodes')\r\n class Node:\r\n name = Column(String(70))\r\n \r\n Database.register()\r\n \r\n if __name__ == '__main__':\r\n db = Database('sqlite://')\r\n db.create_tables()\r\n \r\n root_node = Node(name = 'root')\r\n node1 = Node(name = 'node1', parent_node = root_node)\r\n node2 = Node(name = 'node2', parent_node = root_node)\r\n db.session.add_then_commit(root_node)\r\n \r\n root_node = db.session.query(Node).filter_by(name = 'root').one()\r\n print 'Root node has {0} children nodes, they are {1}'\\\r\n .format(root_node.children_nodes.count(), ', '.join(node.name for node in root_node.children_nodes))\r\n\r\n\r\n|\r\n\r\nMany-to-many relationship example\r\n---------------------------------\r\n\r\n::\r\n\r\n from quick_orm.core import Database\r\n from sqlalchemy import Column, String\r\n \r\n __metaclass__ = Database.DefaultMeta\r\n \r\n class User:\r\n name = Column(String(30))\r\n \r\n @Database.many_to_many(User)\r\n class Role:\r\n name = Column(String(30))\r\n \r\n Database.register()\r\n \r\n if __name__ == '__main__':\r\n db = Database('sqlite://')\r\n db.create_tables()\r\n \r\n user1 = User(name = 'Tyler Long')\r\n user2 = User(name = 'Peter Lau')\r\n role = Role(name = 'Administrator', users = [user1, user2])\r\n db.session.add_then_commit(role)\r\n \r\n admin_role = db.session.query(Role).filter_by(name = 'Administrator').one()\r\n print ', '.join([user.name for user in admin_role.users]), 'are administrators'\r\n\r\n\r\n|\r\n\r\nMany-to-many relationship options example\r\n-----------------------------------------\r\n\r\n::\r\n\r\n from quick_orm.core import Database\r\n from sqlalchemy import Column, String\r\n \r\n __metaclass__ = Database.DefaultMeta\r\n \r\n class User:\r\n name = Column(String(30))\r\n \r\n @Database.many_to_many(User, ref_name = 'users', backref_name = 'roles', middle_table_name = 'user_role')\r\n class Role:\r\n name = Column(String(30))\r\n \r\n Database.register()\r\n \r\n if __name__ == '__main__':\r\n db = Database('sqlite://')\r\n db.create_tables()\r\n \r\n user1 = User(name = 'Tyler Long')\r\n user2 = User(name = 'Peter Lau')\r\n role = Role(name = 'Administrator', users = [user1, user2])\r\n db.session.add_then_commit(role)\r\n \r\n admin_role = db.session.query(Role).filter_by(name = 'Administrator').one()\r\n print ', '.join([user.name for user in admin_role.users]), 'are administrators'\r\n\r\n\r\n|\r\n\r\nMany-to-many relationship with oneself example\r\n----------------------------------------------\r\n\r\n::\r\n\r\n from quick_orm.core import Database\r\n from sqlalchemy import Column, String\r\n \r\n __metaclass__ = Database.DefaultMeta\r\n \r\n @Database.many_to_many('User', ref_name = 'users_i_follow', backref_name = 'users_follow_me')\r\n class User:\r\n name = Column(String(30))\r\n \r\n Database.register()\r\n \r\n if __name__ == '__main__':\r\n db = Database('sqlite://')\r\n db.create_tables()\r\n \r\n peter = User(name = 'Peter Lau')\r\n mark = User(name = 'Mark Wong', users_i_follow = [peter, ])\r\n tyler = User(name = 'Tyler Long', users_i_follow = [peter, ], users_follow_me = [mark, ])\r\n db.session.add_then_commit(tyler)\r\n \r\n tyler = db.session.query(User).filter_by(name = 'Tyler Long').one()\r\n print 'Tyler Long is following:', ', '.join(user.name for user in tyler.users_i_follow)\r\n print 'People who are following Tyler Long:', ', '.join(user.name for user in tyler.users_follow_me)\r\n mark = db.session.query(User).filter_by(name = 'Mark Wong').one()\r\n print 'Mark Wong is following:', ', '.join(user.name for user in mark.users_i_follow)\r\n\r\n\r\n|\r\n\r\nOne-to-one relationship example\r\n-------------------------------\r\n\r\n::\r\n\r\n from quick_orm.core import Database\r\n from sqlalchemy import Column, String\r\n \r\n __metaclass__ = Database.DefaultMeta\r\n \r\n class User:\r\n name = Column(String(30))\r\n \r\n @Database.one_to_one(User)\r\n class Contact:\r\n email = Column(String(70))\r\n address = Column(String(70))\r\n \r\n Database.register()\r\n \r\n if __name__ == '__main__':\r\n db = Database('sqlite://')\r\n db.create_tables()\r\n \r\n contact = Contact(email = 'quick.orm.feedback@gmail.com', address = 'Shenzhen, China')\r\n user = User(name = 'Tyler Long', contact = contact)\r\n db.session.add_then_commit(user)\r\n \r\n user = db.session.query(User).get(1)\r\n print 'User:', user.name\r\n print 'Email:', user.contact.email\r\n print 'Address:', user.contact.address\r\n\r\n\r\n|\r\n\r\nMultiple many-to-one relationships example\r\n------------------------------------------\r\n\r\n::\r\n\r\n from quick_orm.core import Database\r\n from sqlalchemy import Column, String, Text\r\n \r\n __metaclass__ = Database.DefaultMeta\r\n \r\n class User:\r\n name = Column(String(30))\r\n \r\n @Database.many_to_one(User, ref_name = 'author', backref_name = 'articles_authored')\r\n @Database.many_to_one(User, ref_name = 'editor', backref_name = 'articles_edited')\r\n class Article:\r\n title = Column(String(80))\r\n content = Column(Text)\r\n \r\n Database.register()\r\n \r\n if __name__ == '__main__':\r\n db = Database('sqlite://')\r\n db.create_tables()\r\n \r\n author = User(name = 'Tyler Long')\r\n editor = User(name = 'Peter Lau')\r\n article = Article(author = author, editor = editor, title = 'quick_orm is super quick and easy',\r\n content = 'quick_orm is super quick and easy. Believe it or not.')\r\n db.session.add_then_commit(article)\r\n \r\n article = db.session.query(Article).get(1)\r\n print 'Article:', article.title\r\n print 'Author:', article.author.name\r\n print 'Editor:', article.editor.name\r\n\r\n\r\n|\r\n\r\nPerforming raw sql query example\r\n--------------------------------\r\n\r\n::\r\n\r\n from quick_orm.core import Database\r\n from sqlalchemy import Column, String\r\n \r\n __metaclass__ = Database.DefaultMeta\r\n \r\n class User:\r\n name = Column(String(70))\r\n \r\n Database.register()\r\n \r\n if __name__ == '__main__':\r\n db = Database('sqlite://')\r\n db.create_tables()\r\n \r\n count = db.engine.execute('select count(name) from user').scalar()\r\n print 'There are {0} users in total'.format(count)\r\n\r\n\r\n|\r\n\r\nMultiple databases example\r\n--------------------------\r\n\r\n::\r\n\r\n from quick_orm.core import Database\r\n from sqlalchemy import Column, String\r\n \r\n __metaclass__ = Database.DefaultMeta\r\n \r\n class User:\r\n name = Column(String(30))\r\n \r\n Database.register()\r\n \r\n if __name__ == '__main__':\r\n db1 = Database('sqlite://')\r\n db1.create_tables()\r\n \r\n db2 = Database('sqlite://')\r\n db2.create_tables()\r\n \r\n user1 = User(name = 'user in db1')\r\n user2 = User(name = 'user in db2')\r\n db1.session.add_then_commit(user1)\r\n db2.session.add_then_commit(user2)\r\n \r\n print 'I am', db1.session.query(User).get(1).name\r\n print 'I am', db2.session.query(User).get(1).name\r\n\r\n\r\n|\r\n\r\nTable inheritance example\r\n-------------------------\r\n\r\n::\r\n\r\n from quick_orm.core import Database\r\n from sqlalchemy import Column, String, Text\r\n \r\n __metaclass__ = Database.DefaultMeta\r\n \r\n class User:\r\n name = Column(String(70))\r\n \r\n @Database.many_to_one(User)\r\n class Post:\r\n content = Column(Text)\r\n \r\n class Question(Post):\r\n title = Column(String(70))\r\n \r\n @Database.many_to_one(Question)\r\n class Answer(Post):\r\n pass\r\n \r\n @Database.many_to_one(Post)\r\n class Comment(Post):\r\n pass\r\n \r\n @Database.many_to_many(Post)\r\n class Tag:\r\n name = Column(String(70))\r\n \r\n Database.register()\r\n \r\n if __name__ == '__main__':\r\n db = Database('sqlite://')\r\n db.create_tables()\r\n \r\n user1 = User(name = 'Tyler Long')\r\n user2 = User(name = 'Peter Lau')\r\n \r\n tag1 = Tag(name = 'quick_orm')\r\n tag2 = Tag(name = 'nice')\r\n \r\n question = Question(user = user1, title = 'What is quick_orm?', content = 'What is quick_orm?', tags = [tag1, ])\r\n question2 = Question(user = user1, title = 'Have you tried quick_orm?', content = 'Have you tried quick_orm?', tags = [tag1, ])\r\n \r\n answer = Answer(user = user1, question = question, tags = [tag1, ],\r\n content = 'quick_orm is a Python ORM framework which enables you to get started in less than a minute!')\r\n \r\n comment1 = Comment(user = user2, content = 'good question', post = question)\r\n comment2 = Comment(user = user2, content = 'nice answer', post = answer, tags = [tag2, ])\r\n \r\n db.session.add_all_then_commit([question, question2, answer, comment1, comment2, tag1, tag2, ])\r\n \r\n question = db.session.query(Question).get(1)\r\n print 'tags for question \"{0}\": \"{1}\"'.format(question.title, ', '.join(tag.name for tag in question.tags))\r\n print 'new comment for question:', question.comments.first().content\r\n print 'new comment for answer:', question.answers.first().comments.first().content\r\n \r\n user = db.session.query(User).filter_by(name = 'Peter Lau').one()\r\n print 'Peter Lau has posted {0} comments'.format(user.comments.count())\r\n \r\n tag = db.session.query(Tag).filter_by(name = 'quick_orm').first()\r\n print '{0} questions are tagged \"quick_orm\"'.format(tag.questions.count())\r\n\r\n\r\n|\r\n\r\nMetaBuilder to avoid duplicate code example\r\n-------------------------------------------\r\n\r\n::\r\n\r\n from quick_orm.core import Database\r\n from sqlalchemy import Column, String\r\n \r\n class DefaultModel:\r\n name = Column(String(70))\r\n \r\n __metaclass__ = Database.MetaBuilder(DefaultModel)\r\n \r\n class User:\r\n pass\r\n \r\n class Group:\r\n pass\r\n \r\n Database.register()\r\n \r\n if __name__ == '__main__':\r\n db = Database('sqlite://')\r\n db.create_tables()\r\n user = User(name = 'tylerlong')\r\n db.session.add(user)\r\n group = Group(name = 'python')\r\n db.session.add_then_commit(group)\r\n \r\n print user.name\r\n print group.name\r\n\r\n\r\n|\r\n\r\nModel for stackoverflow.com example\r\n-----------------------------------\r\n\r\n::\r\n\r\n from quick_orm.core import Database\r\n from sqlalchemy import Column, String, Text\r\n \r\n __metaclass__ = Database.DefaultMeta\r\n \r\n @Database.many_to_many('User', ref_name = 'followed_users', backref_name = 'followers')\r\n class User:\r\n email = Column(String(200))\r\n name = Column(String(100))\r\n \r\n @Database.many_to_one(User)\r\n class Post:\r\n content = Column(Text)\r\n \r\n @Database.many_to_one(Post)\r\n class Comment(Post):\r\n pass\r\n \r\n class Question(Post):\r\n title = Column(String(200))\r\n \r\n @Database.many_to_one(Question)\r\n class Answer(Post):\r\n pass\r\n \r\n @Database.many_to_many(Post)\r\n class Tag:\r\n name = Column(String(50))\r\n \r\n @Database.many_to_one(User, ref_name = 'sender', backref_name = 'messages_sent')\r\n @Database.many_to_one(User, ref_name = 'receiver', backref_name = 'messages_received')\r\n class Message:\r\n content = Column(Text)\r\n \r\n @Database.many_to_one(User)\r\n @Database.many_to_one(Post)\r\n class Vote:\r\n type = Column(String(20)) #\"vote_up\" or \"vote_down\"\r\n \r\n Database.register()\r\n \r\n if __name__ == '__main__':\r\n db = Database('sqlite://')\r\n db.create_tables()\r\n \r\n user1 = User(email = 'tylerlong@example.com', name = 'Tyler Long')\r\n user2 = User(email = 'peterlau@example.com', name = 'Peter Lau')\r\n \r\n tag1 = Tag(name = 'Python')\r\n tag2 = Tag(name = 'quick_orm')\r\n \r\n question1 = Question(user = user1, title = 'Can you program in Python?', content = 'RT')\r\n question2 = Question(user = user1, title = 'Do you know quick_orm?', content = 'RT')\r\n \r\n answer1 = Answer(user = user2, question = question1, content = 'Yes I can')\r\n answer2 = Answer(user = user2, question = question2, content = 'No I don\\'t')\r\n \r\n comment1 = Comment(user = user1, content = 'You rock')\r\n comment2 = Comment(user = user1, content = 'You suck')\r\n \r\n answer1.comments = [comment1,]\r\n answer2.comments = [comment2,]\r\n \r\n user1.followers = [user2,]\r\n question1.tags = [tag1,]\r\n answer2.tags = [tag2,]\r\n \r\n vote1 = Vote(user = user1, type = 'vote_up', post = question1)\r\n vote2 = Vote(user = user2, type = 'vote_up', post = question1)\r\n vote2 = Vote(user = user2, type = 'vote_down', post = question2)\r\n \r\n db.session.add_all_then_commit([user1, user2,])\r\n \r\n print user2.name, 'is following', ', '.join(user.name for user in user2.followed_users)\r\n print user1.name, 'questions:', ', '.join(question.title for question in user1.questions)\r\n print 'question1 tags:', ', '.join(tag.name for tag in question1.tags)\r\n print 'answer2 comments:', ', '.join(comment.content for comment in answer2.comments)\r\n print 'answer \"', answer1.content, '\" is for question: \"', answer1.question.title, '\"'\r\n print 'there are {0} vote_ups for question \"{1}\"'.format(question1.votes.filter_by(type = 'vote_up').count(), question1.title)\r\n\r\n\r\n|\r\n\r\nExamples from real life\r\n-----------------------\r\n- Everblog_ is a personal blogging platform taking advantage of evernote, it chooses quick_orm as its ORM framework. Refer to `everblog's database model file`_ for more detail.\r\n\r\n.. _Everblog: https://github.com/tylerlong/everblog\r\n.. _`everblog's database model file`: https://github.com/tylerlong/everblog/blob/master/everblog/models.py\r\n\r\nIf you know any other successful stories about quick_orm, do tell me and I will list them above.\r\n\r\n\r\n|\r\n\r\nWhere to learn more about quick_orm?\r\n------------------------------------\r\nAs said above, quick_orm is built upon SQLAlchemy. quick_orm never tries to hide SQLAlchemy's flexibility and power. Everything availiable in SQLAlchemy is still available in quick_orm.\r\n\r\nSo please read the documents of SQLAlchemy, you would learn much more there than you could here.\r\n\r\nRead quick_orm's source code, try to improve it.\r\n\r\n\r\n|\r\n\r\nYou wanna involve?\r\n------------------\r\nquick_orm is released under BSD lisence.\r\n\r\nThe source code is hosted on github: https://github.com/tylerlong/quick_orm\r\n\r\n\r\n|\r\n\r\nAcknowledgements\r\n----------------\r\nquick_orm is built upon SQLAlchemy - the famous Python SQL Toolkit and Object Relational Mapper. All of the glory belongs to the SQLAlchemy development team and the SQLAlchemy community! My contribution to quick_orm becomes trivial compared with theirs( to SQLAlchemy).\r\n\r\n\r\n|\r\n\r\nFeedback\r\n--------\r\nComments, suggestions, questions, free beer, t-shirts, kindles, ipads ... are all welcome!\r\n\r\nEmail: quick.orm.feedback@gmail.com\r\n\r\n\r\n|\r\n\r\ntodo list\r\n---------\r\n#. full text search. (class decorator for model?)\r\n#. orm for nosql? such as this one: http://qslack.com/projects/rhino-a-ruby-hbase-orm/\r\n#. ref_grandchildren can't access some attributes of grandchildren. for example: everblog project: tag.blog_entrys.lang report an error.\r\n#. generate visual charts according to model. It is good for analyzing and demonstrating.\r\n#. multiple many_to_many between two models\r\n#. make table name customizable", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/tylerlong/quick_orm", "keywords": null, "license": "BSD", "maintainer": null, "maintainer_email": null, "name": "quick_orm", "package_url": "https://pypi.org/project/quick_orm/", "platform": "any", "project_url": "https://pypi.org/project/quick_orm/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/tylerlong/quick_orm" }, "release_url": "https://pypi.org/project/quick_orm/0.4.4/", "requires_dist": null, "requires_python": null, "summary": "Python ORM framework, quick, easy, simple yet powerful, based on sqlalchemy.", "version": "0.4.4" }, "last_serial": 798367, "releases": { "0.2.0": [ { "comment_text": "", "digests": { "md5": "d97f52c3aa8ca73499dd7d7bf11d9df4", "sha256": "1e70440dd23df46fbad576fad5216b859360f3c93b6013b206f1e234c7c8f958" }, "downloads": -1, "filename": "quick_orm-0.2.0.tar.gz", "has_sig": false, "md5_digest": "d97f52c3aa8ca73499dd7d7bf11d9df4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8663, "upload_time": "2011-11-04T13:17:34", "url": "https://files.pythonhosted.org/packages/dd/51/fc71a9afa9b4efe1d6e4ad4f4eac3738268d7da7aca4fe0f89bbb105ec3a/quick_orm-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "8eb98a9d0babc79fcef822b7bacceb1f", "sha256": "cc63b76e40bf4c23ff4e12f50db42d1c7b7b0fe3322bca98c25136ad6b724f54" }, "downloads": -1, "filename": "quick_orm-0.2.1.tar.gz", "has_sig": false, "md5_digest": "8eb98a9d0babc79fcef822b7bacceb1f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8490, "upload_time": "2011-11-09T08:11:25", "url": "https://files.pythonhosted.org/packages/76/61/34d4f451215c091906663f892fd984b410d20debaab2df30b7cda805259b/quick_orm-0.2.1.tar.gz" } ], "0.2.10": [ { "comment_text": "", "digests": { "md5": "d85c784494ddd39d313ed3a93ba1c0ae", "sha256": "7d116de51dc6985860131c972bd0d390bfd2f3b87c6031bd7a39c52183fd4347" }, "downloads": -1, "filename": "quick_orm-0.2.10.tar.gz", "has_sig": false, "md5_digest": "d85c784494ddd39d313ed3a93ba1c0ae", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12335, "upload_time": "2011-12-12T16:45:24", "url": "https://files.pythonhosted.org/packages/0e/2c/7dca7e226319380faf8bc4f29d5e42681a4acfc221104e5c8e704f7d70e9/quick_orm-0.2.10.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "32b346f2f5dcfe665dee5ea55ee400f0", "sha256": "095f2fd127c64a440d7f821a34ca2bf8e2dc191e21814415ae516a0ee79d8683" }, "downloads": -1, "filename": "quick_orm-0.2.2.tar.gz", "has_sig": false, "md5_digest": "32b346f2f5dcfe665dee5ea55ee400f0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9578, "upload_time": "2011-11-09T14:30:00", "url": "https://files.pythonhosted.org/packages/26/65/fc0fcd5920ba0a66b1ad66bfce75720749dd4a2ef60ce8101c874db18973/quick_orm-0.2.2.tar.gz" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "2ddfe1d16aba3f17aee96fd63d5fb313", "sha256": "70103260ad10d519c4e814d380eb2dda977a98536164ea5e47cf97ed32707d63" }, "downloads": -1, "filename": "quick_orm-0.2.3.tar.gz", "has_sig": false, "md5_digest": "2ddfe1d16aba3f17aee96fd63d5fb313", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10683, "upload_time": "2011-11-19T16:18:52", "url": "https://files.pythonhosted.org/packages/fc/55/ffc721401783374b7571e2e26263229df39088d87793fccca062484f74c2/quick_orm-0.2.3.tar.gz" } ], "0.2.4": [ { "comment_text": "", "digests": { "md5": "0a2ab4b4aa6a354424de2d3dd4b25bf9", "sha256": "cfc5219d754b2e0282409074f3461410502d46ae6fb858e76e8a43cf52f35f55" }, "downloads": -1, "filename": "quick_orm-0.2.4.tar.gz", "has_sig": false, "md5_digest": "0a2ab4b4aa6a354424de2d3dd4b25bf9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11714, "upload_time": "2011-11-26T15:16:13", "url": "https://files.pythonhosted.org/packages/02/33/8f538cddc9762618f6746f0e0023d82331047ffd9e388f1b5f4c35b10dbb/quick_orm-0.2.4.tar.gz" } ], "0.2.5": [ { "comment_text": "", "digests": { "md5": "5ab370ed1e29dd98b815e0ae9ed5c04f", "sha256": "062b6811f8218cc31bd71295fbd3e8f01734cabe91598446037711e8d6e9d8d3" }, "downloads": -1, "filename": "quick_orm-0.2.5.tar.gz", "has_sig": false, "md5_digest": "5ab370ed1e29dd98b815e0ae9ed5c04f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11783, "upload_time": "2011-11-26T15:28:02", "url": "https://files.pythonhosted.org/packages/48/5d/0a8703c2bc09bccd166a2fd2ae1dbae7f002f017e7413a4db21b06c14edb/quick_orm-0.2.5.tar.gz" } ], "0.2.6": [ { "comment_text": "", "digests": { "md5": "c7ed5fa7ab73304f9826010fdedb801f", "sha256": "12f44bfbc6717278abe2797b04d7f152cc35ee13cfc8b851b3da7d7d5c65e4b7" }, "downloads": -1, "filename": "quick_orm-0.2.6.tar.gz", "has_sig": false, "md5_digest": "c7ed5fa7ab73304f9826010fdedb801f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12256, "upload_time": "2011-11-28T15:44:13", "url": "https://files.pythonhosted.org/packages/09/20/80d2b9d48264ba0b61e242c709a1bf23b3087eee0e4baaea6d074f578f5f/quick_orm-0.2.6.tar.gz" } ], "0.2.7": [ { "comment_text": "", "digests": { "md5": "e066c0bb1622d06041acdb511315c729", "sha256": "b78bd3cb95021ee7fa263a207106be39b9a163012c4f0d16e3571ce1ba48ae42" }, "downloads": -1, "filename": "quick_orm-0.2.7.tar.gz", "has_sig": false, "md5_digest": "e066c0bb1622d06041acdb511315c729", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11919, "upload_time": "2011-11-29T04:27:17", "url": "https://files.pythonhosted.org/packages/b0/9d/23931976a5b8ba3cef0b7cd63e1629eec98c7fb857ab97f3951c87a9be87/quick_orm-0.2.7.tar.gz" } ], "0.2.8": [ { "comment_text": "", "digests": { "md5": "c5e99f44c69e1be7aa70b529811c461d", "sha256": "d13035be7ab7d21720e69f348e931dbeafa512c9d4b55b36ab5e12dd2ba8a958" }, "downloads": -1, "filename": "quick_orm-0.2.8.tar.gz", "has_sig": false, "md5_digest": "c5e99f44c69e1be7aa70b529811c461d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12223, "upload_time": "2011-12-12T16:01:56", "url": "https://files.pythonhosted.org/packages/8f/b9/1a8d9038ac7c288db711f301ff61dfc929c3d8587f3b7bc8f68fa16812bf/quick_orm-0.2.8.tar.gz" } ], "0.2.9": [ { "comment_text": "", "digests": { "md5": "108c1ddd01ab8199d899b3380d4a302e", "sha256": "b6ae88ec94e278c4381397f1227b54237895f90b9ac242d71ddf425998e757d2" }, "downloads": -1, "filename": "quick_orm-0.2.9.tar.gz", "has_sig": false, "md5_digest": "108c1ddd01ab8199d899b3380d4a302e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12323, "upload_time": "2011-12-12T16:42:08", "url": "https://files.pythonhosted.org/packages/51/4a/e09eedefc02c79941961d94b156d3611951882881671faa296be8c894768/quick_orm-0.2.9.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "464b0cf6f8a15a6e1c31886eab9dca8f", "sha256": "8f7548957d1cb990b394d4f2ce7c0814d647c68e63a20ff07fe7bcb16a668874" }, "downloads": -1, "filename": "quick_orm-0.3.0.tar.gz", "has_sig": false, "md5_digest": "464b0cf6f8a15a6e1c31886eab9dca8f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12994, "upload_time": "2012-01-13T15:55:49", "url": "https://files.pythonhosted.org/packages/8e/ae/22d642921031d04892f8e6749521e1d9e2ab4ee13a23654afd9082451c86/quick_orm-0.3.0.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "a6184a1a7f8255c1020ec1f880dc837f", "sha256": "bd8dbbb561b1046d2e817696b0b2c31df64fbfa0bbbaf58711183321db77cd30" }, "downloads": -1, "filename": "quick_orm-0.3.1.tar.gz", "has_sig": false, "md5_digest": "a6184a1a7f8255c1020ec1f880dc837f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13199, "upload_time": "2012-01-13T16:39:29", "url": "https://files.pythonhosted.org/packages/22/21/d9a289dc11dbac9f94ecfbadf5b4f6245ad268fea6c683101107ca39a029/quick_orm-0.3.1.tar.gz" } ], "0.3.2": [ { "comment_text": "", "digests": { "md5": "a3d17db4e9a5ff5ec162ec1dac477b3e", "sha256": "010312a0f36f074d6bbd07c0c79376155a6d0db2268d8cf682fd244ae7e6e4ed" }, "downloads": -1, "filename": "quick_orm-0.3.2.tar.gz", "has_sig": false, "md5_digest": "a3d17db4e9a5ff5ec162ec1dac477b3e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13526, "upload_time": "2012-01-16T04:26:31", "url": "https://files.pythonhosted.org/packages/72/eb/42281d5464bc7342aad66342d5a40c253b4f3eb0b6a331ed067044ecc7c9/quick_orm-0.3.2.tar.gz" } ], "0.3.3": [], "0.3.4": [ { "comment_text": "", "digests": { "md5": "9409533102d90b343fcaf3452159bc8a", "sha256": "36a5a147a4822cfb262548c19113e1eb685f0c21bbcc96537dba971c2693b54e" }, "downloads": -1, "filename": "quick_orm-0.3.4.tar.gz", "has_sig": false, "md5_digest": "9409533102d90b343fcaf3452159bc8a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13630, "upload_time": "2012-01-30T10:20:47", "url": "https://files.pythonhosted.org/packages/35/c5/b0ef20eb5675c1c71e3d13edad0bc3e42316e09c25727305506149a8d4d5/quick_orm-0.3.4.tar.gz" } ], "0.3.5": [ { "comment_text": "", "digests": { "md5": "e8d330f00abe24950cb7602cba7113d2", "sha256": "37dc1f77d35c5a5bf8a76b6788a7eb66fcdf079eb648391ebd5f03e60977caab" }, "downloads": -1, "filename": "quick_orm-0.3.5.tar.gz", "has_sig": false, "md5_digest": "e8d330f00abe24950cb7602cba7113d2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13583, "upload_time": "2012-02-04T04:48:16", "url": "https://files.pythonhosted.org/packages/11/6a/7c7b8b21daca1e384e7f2ec09d3b7986b1418599996023484fafc0385377/quick_orm-0.3.5.tar.gz" } ], "0.3.6": [ { "comment_text": "", "digests": { "md5": "f3d6d888d5dbcf0ce204905a91211046", "sha256": "0f69ce447eb934a9276505dde73f2d44ffd7d7af662d207709391478a639eec7" }, "downloads": -1, "filename": "quick_orm-0.3.6.tar.gz", "has_sig": false, "md5_digest": "f3d6d888d5dbcf0ce204905a91211046", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13603, "upload_time": "2012-02-04T10:56:40", "url": "https://files.pythonhosted.org/packages/e7/d5/f2a3a42801ccd08f3a498886af2a8ab552816e0aa554b89e6dad4ecc1d97/quick_orm-0.3.6.tar.gz" } ], "0.3.7": [ { "comment_text": "", "digests": { "md5": "b57f986ceb66d1315a4a41fefccd8609", "sha256": "4817839e0733f26cf89308e83adbd075a3e8ebe8cd8c886e7a29f5abcbbee96a" }, "downloads": -1, "filename": "quick_orm-0.3.7.tar.gz", "has_sig": false, "md5_digest": "b57f986ceb66d1315a4a41fefccd8609", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13256, "upload_time": "2012-04-09T14:46:12", "url": "https://files.pythonhosted.org/packages/9c/28/2a357e1ec2231694680e8b6316d1caa98b30e7d52ee3e7ba6ffef82f4840/quick_orm-0.3.7.tar.gz" } ], "0.3.8": [ { "comment_text": "", "digests": { "md5": "6f84fc8d17e943c155e2a39ee987a70d", "sha256": "f6f5dd08199ded1d1bcf3f0e060c7d0b02450c0767899630184d6469e3a3c574" }, "downloads": -1, "filename": "quick_orm-0.3.8.tar.gz", "has_sig": false, "md5_digest": "6f84fc8d17e943c155e2a39ee987a70d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13411, "upload_time": "2012-04-26T10:22:27", "url": "https://files.pythonhosted.org/packages/17/42/b7ca800a1c3f0400c8896b620256684db8ae31936e82dfa91096c12f344b/quick_orm-0.3.8.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "2a4b024e16dbc0359418a71ee894aac5", "sha256": "b57e71bce5a12f55ab6fb7fcf42940f602a373c2ec9873a7b9b0db2e2b7344e8" }, "downloads": -1, "filename": "quick_orm-0.4.0.tar.gz", "has_sig": false, "md5_digest": "2a4b024e16dbc0359418a71ee894aac5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13440, "upload_time": "2012-04-26T16:45:13", "url": "https://files.pythonhosted.org/packages/b7/7b/541057c64c747080dcb8f5d0504590ac4aa5f319052d549ec691cd0990eb/quick_orm-0.4.0.tar.gz" } ], "0.4.2": [ { "comment_text": "", "digests": { "md5": "5a2f35339c54cd72fe9cf3e84ff8e57c", "sha256": "242ebf4fae3d7b8619aef1cacd626e07a961197c5c82ab2ffebff057a6645302" }, "downloads": -1, "filename": "quick_orm-0.4.2.tar.gz", "has_sig": false, "md5_digest": "5a2f35339c54cd72fe9cf3e84ff8e57c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13531, "upload_time": "2012-05-06T04:30:37", "url": "https://files.pythonhosted.org/packages/49/4f/298ef7eb52d1425bf977627c4e2acaa8bfa8335c0f2964e32c6abb464266/quick_orm-0.4.2.tar.gz" } ], "0.4.3": [ { "comment_text": "", "digests": { "md5": "8e48c2ac8a94ad639d64d3f29877d3e4", "sha256": "c052030affa164067ad3b3c205b543f9c21e788c3a647bd1af7a099305ffd2df" }, "downloads": -1, "filename": "quick_orm-0.4.3.tar.gz", "has_sig": false, "md5_digest": "8e48c2ac8a94ad639d64d3f29877d3e4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14231, "upload_time": "2013-01-07T09:06:05", "url": "https://files.pythonhosted.org/packages/d0/20/37f581aa449c2711e0ca909e5eb4daa1a18a3c23a4e8c82de36f1c4dac27/quick_orm-0.4.3.tar.gz" } ], "0.4.4": [ { "comment_text": "", "digests": { "md5": "92a0c170b703fa63ed87c99f8f00abc9", "sha256": "3b471ccbbe538cafa2816595c83855e158d57465308c96aa6da6b2b3c1a70add" }, "downloads": -1, "filename": "quick_orm-0.4.4.tar.gz", "has_sig": false, "md5_digest": "92a0c170b703fa63ed87c99f8f00abc9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14236, "upload_time": "2013-02-26T13:19:43", "url": "https://files.pythonhosted.org/packages/de/08/c05ef39ba0452b346774929dba9ee5e4459cb6cf0710de7f22968678a78c/quick_orm-0.4.4.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "92a0c170b703fa63ed87c99f8f00abc9", "sha256": "3b471ccbbe538cafa2816595c83855e158d57465308c96aa6da6b2b3c1a70add" }, "downloads": -1, "filename": "quick_orm-0.4.4.tar.gz", "has_sig": false, "md5_digest": "92a0c170b703fa63ed87c99f8f00abc9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14236, "upload_time": "2013-02-26T13:19:43", "url": "https://files.pythonhosted.org/packages/de/08/c05ef39ba0452b346774929dba9ee5e4459cb6cf0710de7f22968678a78c/quick_orm-0.4.4.tar.gz" } ] }