首页 > 解决方案 > sqlalchemy.exc.ProgrammingError:(psycopg2.ProgrammingError)无法适应类型“电影”

问题描述

有人可以告诉我我做错了什么吗?我从 IMDBPY 中提取数据,一切都匹配,但现在它不会进入我的表格?!

sqlalchemy.exc.ProgrammingError:(psycopg2.ProgrammingError)无法适应类型“电影”[SQL:插入电影(标题,“演员”,情节,用户名)值(%(标题)s,%(演员)s, %(plot)s, %(username)s) RETURNING movie.id] [parameters: {'title': <Movie id:0120338[http] title: Titanic (1997) >, 'cast': <Person id:0000138 [http] 名称:莱昂纳多·迪卡普里奥>,“情节”:“一位 17 岁的贵族爱上了豪华但命运多舛的泰坦尼克号上一位善良但贫穷的艺术家。::j-jessie-weaver”,“用户名':'plzwork'}](此错误的背景:http ://sqlalche.me/e/13/f405 )

电影表

class Movie(db.Model):
    """movies."""

    __tablename__ = "movie"

    id = db.Column(db.Integer, 
                   primary_key=True)
    title = db.Column(db.String(100),
                      nullable=False)
    cast = db.Column(db.Text)
    plot = db.Column(db.Text)
    username = db.Column(
        db.String(20),
        db.ForeignKey('users.username'),
        nullable=False,
    )

将电影添加到数据库

@app.route("/users/<username>/movies/new", methods=["GET", "POST"])
def movie_show(username):
    
    """Show  Movie Search Form and process it."""
    if 'username' not in session or username != session['username']:
        raise Unauthorized()
    
    form= MovieForm()
    
    if form.validate_on_submit():
        title = form.title.data
        cast= form.cast.data
        plot=form.plot.data
        title=moviesDB.search_movie(title)[0]
        moviesDB.update(title)
        cast=title['cast'][0]
        moviesDB.update(title)
        plot=title['plot'][0]
        moviesDB.update(title)
        
        movie = Movie( 
        title=(title),
        cast=(cast),
        plot= (plot),
        username=username)
        
        
        print('title', title)
     
        print('plot', plot)
        db.session.add(movie)
        db.session.commit()
    
        return redirect(f"/users/{movie.username}")
        
    else:
        return render_template("movies/new.html", form=form)
register_adapter(Movie,movie_show)

标签: pythondatabaseformsformattingpsql

解决方案


我通过使用另一个 API omdbapi 解决了这个问题,使用 json 创建了一个函数来获取数据,然后我调用了该函数来更新我的 Models.Py。即使没有人回答我的问题,希望这能解决某人的错误:)


推荐阅读