问题描述
我正在从 imdbpy 创建电影数据库,但在将搜索到的电影添加到数据库时遇到问题。
有人可以看看我的代码,并就我需要更改的代码部分的片段给我任何建议吗?
这真的很重要,谢谢!
电影=#从电影中选择*; 身份证 |标题 |演员 |情节|用户名 ----+------------+------+------+------- 1 |泰坦尼克号 | | | eftn123 2 |泰坦尼克号 | | | eftn123 4 |泰坦尼克号 | | | eftn123 5 |泰坦尼克号 | | | eftn123 6 |泰坦尼克号 | | | eftn123 7 |晚餐和电影 | | | eftn123 8 |晚餐和电影 | | | eftn123 9 |晚餐和电影 | | | eftn123 10 |青少年泰坦| 高分辨率照片| CLIPARTO | |请工作
错误:
sqlalchemy.exc.ProgrammingError
sqlalchemy.exc.ProgrammingError: (psycopg2.ProgrammingError) 无法适应类型“函数”
[sql: INSERT INTO movie (title,"cast",plot,username) VALUES (%(title)s,%(cast)s,%(plot)s,%(username)s) RETURNING movie.id]
[参数: {'title': 'teen titans','cast':
回溯(最近一次调用最后一次) 文件“C:\Users\eftn\OneDrive\Desktop\movieapi\venv\Lib\site-packages\sqlalchemy\engine\base.py”,第 1276 行,在 _execute_context self.dialect.do_execute( 文件“C:\Users\eftn\OneDrive\Desktop\movieapi\venv\Lib\site-packages\sqlalchemy\engine\default.py”,第 593 行,在 do_execute 在这个framecursor.execute(statement,parameters)中打开一个交互式python shell
获取电影详情
class GetMovieDetails(object):
def __init__(self,movie):
self.movie =movie
def get_details(self,info_type):
return self.movie.get(info_type)
def movie_details(self):
movie_details = {}
movie_details['title'] = '-' if self.get_details('title') is None else self.get_details('title')
movie_details['cast'] = ','.join('-' if self.get_details('cast') is None else [i['name'] for i in list(self.get_details('cast'))])
movie_details['plot'] = '-' if self.get_details('plot') is None else self.get_details('plot')[0]
return movie_details
搜索电影路线
@app.route("/users/<username>//movies/new",methods=["GET","POST"])
def search_movies(用户名):
"""Show Movie Search Form and process it."""
if 'username' not in session or username != session['username']:
raise Unauthorized()
"""Search movie and show movie"""
query= request.args.get('Movie')
movies=moviesDB.search_movie(query)
movie_id=movies[0].movieID
movie = moviesDB.get_movie(movie_id,info=['title','cast','plot'])
movie_details_obj = GetMovieDetails(movie)
movie_details_dict = movie_details_obj.movie_details()
results =[]
for movie in movies:
results.append(
{'title': movie['title'],'year': movie['year'],'cast': movie['cast'],'plot': movie['plot'],})
return (query,results)
@app.route("/users/<username>/movies/new","POST"])
def movie_show(用户名):
"""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
list_cast= form.cast.data
plot=form.plot.data
movie = Movie(
title=(title),cast=(cast),plot= (plot),username=username)
print('title',title)
print('cast',list_cast)
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)
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)