寻找可以解决问题的解决方案:
避免
夸
轻松输出 JSON ,可能 XML ,甚至协议缓冲区。
我做网络,桌面和移动软件开发,因此越便携越好。
python
>> from someAmazingDB import *
>> db.taskList = []
>> db['taskList'].append({title:'Beat old sql interfaces','done':False})
>> db.taskList.append({title:'Illustrate different syntax modes','done':True})
#at this point it should autosave
#we should be able to reload the console and access like:
python
>> from someAmazingDB import *
>> print 'Done tasks'
>> for task in db.taskList:
>> if task.done:
>> print task
'Illustrate different syntax modes'
以下是挑战: 上述代码应该只需要很少的修改或思考。就像一个不同的导入语句,也许还有一点,但 Django模型和SQLAlchemy不要削减它。
我正在寻找更有趣的图书馆建议,而不只是“尝试搁置”或“使用泡菜”
我并不反对将Python类用于模型,但它们应该非常直接,不像你在Django和类似的东西中看到的那样。
答案 0 :(得分:2)
我今天早些时候正在做类似这样的事情。目前还没有自述或足够的测试,但...... http://github.com/mikeboers/LiteMap/blob/master/litemap.py
LiteMap
类的行为与内置字典非常相似,但它仍然存在于SQLite数据库中。您没有说明您感兴趣的特定数据库,但这几乎可以简单地修改为任何后端。
它也不会跟踪可变类的更改(例如,在示例中附加到列表中),但API非常简单。
答案 1 :(得分:1)
数据库访问不会比SQLAlchemy好。
答案 2 :(得分:1)
请注意解释Django的模型,你找不到直截了当的东西?以下是我在Django中所做的事情:
from django.db import models
class Task(models.Model):
title = models.CharField(max_length=...)
is_done = models.BooleanField()
def __unicode__(self):
return self.title
----
from mysite.tasks.models import Task
t = Task(title='Beat old sql interfaces', is_done=True)
t.save()
----
from mysite.tasks.models import Task
print 'Done tasks'
for task in Task.objects.filter(is_done=True):
print task
对我来说似乎很简单!此外,导致稍微更清洁的表/对象命名方案IMO。更棘手的部分是使用Django的DB模块与Django的其余部分分开,如果这是你所追求的,但它可以完成。
答案 3 :(得分:1)
使用web2py:
>>> from gluon.sql import DAL, Field
>>> db=DAL('sqlite://stoarge.db')
>>> db.define_table('taskList',Field('title'),Field('done','boolean')) # creates the table
>>> db['taskList'].insert(title='Beat old sql interfaces',done=False)
>>> db.taskList.insert(title='Beat old sql interfaces',done=False)
>> for task in db(db.taskList.done==True).select():
>> print task.title
支持10种不同的数据库后端+谷歌应用引擎。
答案 4 :(得分:1)
问题看起来与http://api.mongodb.org/python/1.9%2B/tutorial.html
非常相似所以答案是pymongo,还有什么;)
from pymongo import Connection
connection = Connection()
connection = Connection('localhost', 27017)
tasklist = db['test-tasklist']
tasklist.append({title:'Beat old sql interfaces','done':False})
db.tasklist.append({title:'Illustrate different syntax modes','done':True})
for task in db.tasklist.find({done:True}):
print task.title
我没有对代码进行过测试,但与此不一样
BTW Redish也很有趣也很有趣。