¿Cómo consultar una database MySQL a través de python usando peewee / mysqldb?

Estoy creando un cliente iOS para App.net y estoy intentando configurar un server de notifications push. Actualmente, mi aplicación puede agregar un identificador de count App.net (una cadena de numbers) y un token de dispositivo APNS a una database MySQL en mi server. También puede eliminar estos datos. He adaptado el código de estos dos tutoriales:

  • Cómo escribir un service web PHP / MySQL simple para una aplicación para iOS – raywenderlich.com
  • Apple Push Notification Services en iOS 6 Tutorial: Parte 1/2 – raywenderlich.com

Además, he adaptado esta increíble secuencia de commands de Python para escuchar la App Stream API de App.net.

Mi python es horrible, como lo es mi conocimiento de MySQL. Lo que bash hacer es acceder al token del dispositivo APNS para las counts que necesito notificar. Mi tabla de database tiene dos campos / columnas para cada input, una para user_id y una para device_token. No estoy seguro de la terminología, por favor avíseme si puedo aclarar esto.

He estado tratando de usar peewee para leer en la database, pero estoy en path por encima de mi cabeza. Este es un script de testing con marcador de position user_id :

 import logging from pprint import pprint import peewee from peewee import * db = peewee.MySQLDatabase("...", host="localhost", user="...", passwd="...") class MySQLModel(peewee.Model): class Meta: database = db class Active_Users(MySQLModel): user_id = peewee.CharField(primary_key=True) device_token = peewee.CharField() db.connect() # This is the placeholder user_id userID = '1234' token = Active_Users.select().where(Active_Users.user_id == userID) pprint(token) 

Esto luego se imprime:

 <class '__main__.User'> SELECT t1.`id`, t1.`user_id`, t1.`device_token` FROM `user` AS t1 WHERE (t1.`user_id` = %s) [u'1234'] 

Si el código no lo dejó claro, estoy intentando consultar la database para la fila con user_id de ' 1234 ' y quiero almacenar el device_token de la misma fila (nuevamente, probablemente la terminología incorrecta) en una variable que puedo usar cuando envío la notificación push más adelante en el script.

¿Cómo devuelvo correctamente device_token? Además, ¿sería más fácil renunciar a peewee y simplemente consultar la database usando python-mysqldb? Si ese es el caso, ¿cómo voy a hacer eso?

La llamada User.select().where(User.user_id == userID) devuelve un object User pero lo está asignando a una variable llamada token ya que espera solo el device_token .

Su tarea debe ser la siguiente:

 matching_users = Active_Users.select().where(Active_Users.user_id == userID) # returns an array of matching users even if there's just one if matching_users is not None: token = matching_users[0].device_token