首页 > 解决方案 > SQLAlchemy 错误绑定参数 2 - 可能不受支持的类型

问题描述

当尝试更新我的 sqlite 数据库上的数据时,我收到此错误,我相信这是因为数据类型不匹配,但我无法通过在我的代码中切换数据类型来修复它。

正在更新的表格:

    __tablename__ = 'games'
    ID = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.Text, unique=True)
    dateadded = db.Column(db.Text)#Date)
    useradded = db.Column(db.ForeignKey('userinfo.username'))
    description = db.Column(db.Text, unique=True)
    datepublished = db.Column(db.Text)#Date)
    publisher = db.Column(db.ForeignKey('publishers.publishername'))
    developer = db.Column(db.ForeignKey('developers.developername'))
    developer1 = db.relationship('Developer', primaryjoin='Game.developer == Developer.developername', backref='games')
    publisher1 = db.relationship('Publisher', primaryjoin='Game.publisher == Publisher.publishername', backref='games')
    userinfo = db.relationship('Userinfo', primaryjoin='Game.useradded == Userinfo.username', backref='games')

更新它的功能:

def creategame():
    user=current_user()
    if user:
        new_game = Game()
        #new_publisher = Publisher()
        #new_developer = Developer()
        new_game.name = request.form.get('gamename')
        current_date = date.today()#datetime.now().date()
        new_game.dateadded = str(current_date.strftime('%m-%d-%Y'))
        new_game.useradded = current_user()
        new_game.description = request.form.get('description')
        new_game.datepublished = str(request.form.get('datepublished'))
        new_game.publisher = request.form.get('publisher')
        #new_publisher.publishername == new_game.publisher
        new_game.developer = request.form.get('developer')
        #new_developer.developername == new_game.developer
        print(new_game.name, new_game.dateadded, new_game.useradded, new_game.description, new_game.datepublished, 
        new_game.publisher, new_game.developer) # debug
        if request.form.get('gamename'):
            print(new_game.name, new_game.dateadded, new_game.useradded, new_game.description, new_game.datepublished, 
            new_game.publisher, new_game.developer) # debug
            print("here the second") # debug
            #db.session.add(new_developer)
            #db.session.commit()
            #db.session.add(new_publisher)
            #db.session.commit()
            db.session.add(new_game)
            db.session.commit() # this probably isnt working because of publisher & developer being foreign keys, need to figure out how to get around this
    return redirect(request.form.get('from', '/'))

错误信息:

sqlalchemy.exc.InterfaceError: (sqlite3.InterfaceError) Error binding parameter 2 - probably unsupported type.
[SQL: INSERT INTO games (name, dateadded, useradded, description, datepublished, publisher, developer) VALUES (?, ?, ?, ?, ?, ?, ?)]
[parameters: ('aa', '10-24-2020', <Userinfo 4>, 'afh', '2020-09-29', 'afhj', 'ADDG')]
(Background on this error at: http://sqlalche.me/e/rvf5)

标签: pythonsqlsqlitedatetimesqlalchemy

解决方案


推荐阅读