1

私は次の設定をしています:

from flask import Flask
from sqlalchemy import Table, Column, Integer
from flask.ext.sqlalchemy import SQLAlchemy
import os

basedir = os.path.abspath(os.path.dirname(__file__))
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///offences.db'
offencedb = SQLAlchemy(app)


class Offences(offencedb.Model):
      id = offencedb.Column(offencedb.Integer, primary_key=True)
      nick = offencedb.Column(offencedb.String(100), unique=True)
      offences = offencedb.Column(offencedb.Integer)  

      def __init__(self, nick, offences):
          self.nick = nick
          self.offences = offences

      def __repr__(self):
          return '<Nick %r>' % self.nick

モデルを次のように使用しようとすると:

offencesquery = Offences.query.filter_by(nick = nick).first()

次のエラーが表示されます。

Error binding parameter 0 - probably unsupported type.

しかし、ニックは文字列であり、データベースにはニック列が文字列として含まれています...

4

1 に答える 1

1

あなたのコメントで見たように、あなたがしたとき、あなたが想定していたようにprint(type(nick))、の値nickが実際には文字列ではないことがわかりました。代わりに、それはLibraries.biblib.nickclassオブジェクトでした。したがって、あなたがしたとき...

offencesquery = Offences.query.filter_by(nick = nick).first()

...基本的に、nickフィールドが Python オブジェクト (nickclassオブジェクト) の値を持つすべてのオフェンスに対して SQL クエリを作成しようとしていました。これは意味がありません。SQL はオブジェクトを理解せず、文字列や整数などを理解します。SQLAlchemy はそのオブジェクトを SQL が理解できるものに変換しようとしましたが、失敗しました。したがって、エラーメッセージ。書いていたら…

nick = 'Test'
offencesquery = Offences.query.filter_by(nick = nick).first()

...その後、あなたのコードはうまくいったでしょう。おそらく、nickclassオブジェクトには、nickname文字列に使用できる属性または何かがありますか?

于 2013-11-02T20:59:43.110 に答える