3

メールがAppengineのデータベースにあるかどうかを確認したいのですが、ない場合はデータストアに入力します。

私はPythonを初めて使用します。 この単純なコードが機能しないのはなぜですか?(また、これを書くためのより良い方法/より効率的な方法がある場合は、教えてください)

(エラーが発生します:BadArgumentError:未使用の位置引数[1])

class EmailAdd(webapp.RequestHandler):
def get(self):
    query = db.GqlQuery("SELECT * FROM EmailDatabase WHERE emailaddress=':1'", self.request.get('emailaddress'))
    result = query.get()
    if result is None:
        newemail = EmailDatabase()
        newemail.emailaddress = self.request.get('emailaddress')
        newemail.put()

参考までに、これは私のdbクラスです。

class EmailDatabase(db.Model):
     emailaddress = db.StringProperty()
     date = db.DateTimeProperty(auto_now_add=True)
4

1 に答える 1

6

パラメーターをクエリにバインドするときに引用符を使用する必要はありません。

query = db.GqlQuery("SELECT * FROM EmailDatabase WHERE emailaddress = :1", self.request.get('emailaddress'))

それ以外の場合、文字列として読み取られ、実際には:1メールアドレスの値を持つオブジェクトのみが返されます。

self.request.get('emailaddress')また、クエリに挿入する前に、ユーザー入力 ( ) を検証してください。

于 2010-01-28T11:41:57.570 に答える