如何使用peewee/mysqldb通过python查询MySQL数据库?

如何使用peewee/mysqldb通过python查询MySQL数据库?,python,mysql,ios,peewee,Python,Mysql,Ios,Peewee,我正在为App.net创建iOS客户端,并尝试设置推送通知服务器。目前,我的应用程序可以将用户的app.net帐户id(一串数字)和APNS设备令牌添加到我服务器上的MySQL数据库中。它还可以删除此数据。我改编了以下两个教程中的代码: 此外,我已经适应了收听App.net的应用程序流API 我的python非常可怕,我的MySQL知识也是如此。我要做的是访问我需要通知的帐户的APNS设备令牌。我的数据库表中的每个条目有两个字段/列,一个用于用户标识,一个用于设备标识。我不确定术语,请让

我正在为App.net创建iOS客户端,并尝试设置推送通知服务器。目前,我的应用程序可以将用户的app.net帐户id(一串数字)和APNS设备令牌添加到我服务器上的MySQL数据库中。它还可以删除此数据。我改编了以下两个教程中的代码:

此外,我已经适应了收听App.net的应用程序流API

我的python非常可怕,我的MySQL知识也是如此。我要做的是访问我需要通知的帐户的APNS设备令牌。我的数据库表中的每个条目有两个字段/列,一个用于用户标识,一个用于设备标识。我不确定术语,请让我知道,如果我可以澄清这一点

我一直想用它从数据库中读取数据,但我有点不知所措。这是一个带有占位符
用户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)
然后打印出:

<class '__main__.User'> SELECT t1.`id`, t1.`user_id`, t1.`device_token` FROM `user` AS t1 WHERE (t1.`user_id` = %s) [u'1234']
选择t1.`id`,t1.`user\u id`,t1.`device\u token`从`user`作为t1,其中(t1.`user\u id`=%s)[u'1234']
如果代码没有明确说明,我将尝试在数据库中查询具有“
1234
”的
user\u id
”的行,并且我希望将同一行的
device\u token
存储到一个变量中(同样,可能是错误的术语),以便稍后在脚本中发送推送通知时使用

如何正确返回设备\u令牌?另外,放弃peewee而简单地使用python mysqldb查询数据库会更容易吗?如果是这样的话,我该怎么做呢?

调用
User.select()。其中(User.User\u id==userID)
返回一个
User
对象,但您将其分配给一个名为
token
的变量,因为您只需要
device\u token

您的任务应该是:

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

太棒了,谢谢你这么快的回复。我做了一些编辑,因为结果是
类用户(ActiveUsers)..
当时正在查询一个名为“users”的表,而实际上我的表名为“active\u users”。现在使用您的代码,我正在正确地查询我的表,但我现在收到了以下输出:
\u mysql\u exceptions.OperationalError:(1054,“字段列表”中的未知列“t1.id”)
我想这可能与我的表中没有名为“
id
”的列有关。有什么想法吗?
Unknown column
表示columns存在,所以你是对的。将
id
列添加到您的表中。我让它工作了!我只需要将其中一个字段设置为主键。我不太清楚这是什么意思,但它打印出了我的代币!我已将行“user\u id=peewee.Charfield()”更新为“user\u id=peewee.Charfield(primary\u key=True)”。谢谢你的帮助!