Как считывать данные из базы данных SQLite в словарь перед кодированием их в JSON?

Я новичок в python и использую SQLite. Так что, пожалуйста, будьте терпеливы со мной. Я не совсем уверен, сколько информации я должен предоставить, поэтому я решил разместить столько кода, сколько, по моему мнению, связано. Как говорится; береженого Бог бережет.

По сути, то, что у меня есть, это скрипт на Python, на котором работает сервер cherrypy для своего рода однорангового веб-приложения для социальных сетей. У меня есть метод, который регистрирует три вида обновлений, которые я делаю в своем профиле; Новый пост, новое фото или новое событие.

Каждое обновление содержит следующие поля:

messageID: A 16 letter string containing a unique identifier
creator: My user name
created: A time stamp, UNIX Epoch time, of when the update took place
body: A short message about the update.
Link: A link to the update. e.g.. "/gallery/photo5"
Type: type 1 means new post, 2 means photo, 3 means event.

Я превратил эти поля в столбцы таблицы внутри базы данных, созданной с помощью SQLite, вот метод, который я использовал для этого:

    @cherrypy.expose
    def writeUpdate(self, type=None):
        """This method is called whenever a change takes place on the Acebook
        It takes an input 'type' to know what kind of update it is.
        The method then make appropriet change to the 'Updates' database
        """

        con = lite.connect('static/database/Updates.db')
        messageID = self.randomword()
        creator = trueUser
        created = time.time()
        if type == 1:
            link = "/homepage"
            body = "New Status Update"
        elif type == 2:
            link = "/portfolio"
            body = "New Photo Update"
        elif type ==3:
            link = "/event"
            body = "New Event Update"
        else:
            link = "/homepage"
            body = "If you are seeing this, something is not quite right with by server"

        with con:

            cur = con.cursor() 
            cur.execute("CREATE TABLE IF NOT EXISTS Updates(messageID TEXT, creator TEXT, created INT, link TEXT, type INT, body TEXT)")   
            cur.execute("INSERT INTO Updates VALUES(?, ?, ?, ?, ?, ?)", (messageID, creator, created, link, type, body))

            "Debugging check"
            cur.execute('select * from Updates')
            print "The Updates database now contains:"
            for row in cur:
                print row


        return          

У меня есть другой метод, который мои друзья могу позвонить, чтобы получить ленту новостей о моих последних обновлениях. Вот этот метод:

@cherrypy
def getActivity(self, minutes=48*60):
“”” Return any updates since last time this user requested them. Optional argument returns the last updates in the given time period instead.
“””
# current_user = getAuthenticatedUser(): # if not current_user:
# return “Please Authenticate”
# updates = getUpdatesByUser(current_user)

ExampleUpdate = [ {
‘messageID’: “ccog001-1332889924-839”, ‘creator’: “ccog001”,
‘created’: 1332889924,
‘link’: “/updates?id=839”,
‘type’: 1,
‘body’: “Hello, is anybody out there?”
},{
‘messageID’: “ccog001-1332890482-840”, ‘creator’: “ccog001”,
‘created’: 1332890482,
‘link’: “/updates?id=840”, ‘type’: 1,
‘body’: “Seriously, is this thing on?” }
]


reply = json.dumps(updates)
return reply

Мой вопрос: как прочитать отдельные строки базы данных в отдельный словарь, а затем объединить весь словарь вместе в формате переменной Example Update, прежде чем кодировать все это с помощью json.dumps?

Или, может быть, будет проще, если я напишу ID сообщения, создатель, создал... и т.д...сначала в словарь, прежде чем записывать этот словарь в базу данных? Итак, я получаю базу данных, содержащую только один столбец словарей? Если да, то каким будет код?

Я новичок, поэтому ответьте подробно, желательно с кодом и комментариями, которые помогут мне понять.

Большое спасибо за внимание

5
задан Synia 3 April 2012 в 02:27
поделиться