我有以下设置:
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.
但是nick是一个字符串,数据库将缺口列作为字符串...
答案 0 :(得分: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
属性或者您可以用于字符串的东西?