Hi Simon, I always turn on debug mode using export FLASK_DEBUG=1 in the shell, but no error pops out, so I have no idea whether that is similar. I tried echo="debug", but didn’t really understand the results, so I am confused as to how to edit my code. I have used both edits as suggested, and this is what was produced: ```` 2019-07-03 18:49:43,100 INFO sqlalchemy.engine.base.Engine select version() 2019-07-03 18:49:43,100 INFO sqlalchemy.engine.base.Engine {} 2019-07-03 18:49:43,764 DEBUG sqlalchemy.engine.base.Engine Col ('version',) 2019-07-03 18:49:43,764 DEBUG sqlalchemy.engine.base.Engine Row ('PostgreSQL 11.4 (Ubuntu 11.4-1.pgdg16.04+1 ) on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 5.4.0-6ubuntu1~16.04.11) 5.4.0 20160609, 64-bit',) 2019-07-03 18:49:43,765 INFO sqlalchemy.engine.base.Engine select current_schema() 2019-07-03 18:49:43,765 INFO sqlalchemy.engine.base.Engine {} 2019-07-03 18:49:44,109 DEBUG sqlalchemy.engine.base.Engine Col ('current_schema',) 2019-07-03 18:49:44,110 DEBUG sqlalchemy.engine.base.Engine Row ('public',) 2019-07-03 18:49:44,534 INFO sqlalchemy.engine.base.Engine SELECT CAST('test plain returns' AS VARCHAR(60)) AS anon_1 2019-07-03 18:49:44,534 INFO sqlalchemy.engine.base.Engine {} 2019-07-03 18:49:44,947 INFO sqlalchemy.engine.base.Engine SELECT CAST('test unicode returns' AS VARCHAR(60) ) AS anon_1 2019-07-03 18:49:44,947 INFO sqlalchemy.engine.base.Engine {} 2019-07-03 18:49:45,353 INFO sqlalchemy.engine.base.Engine show standard_conforming_strings 2019-07-03 18:49:45,353 INFO sqlalchemy.engine.base.Engine {} 2019-07-03 18:49:45,762 DEBUG sqlalchemy.engine.base.Engine Col ('standard_conforming_strings',) 2019-07-03 18:49:45,762 DEBUG sqlalchemy.engine.base.Engine Row ('on',) 2019-07-03 18:49:46,173 INFO sqlalchemy.engine.base.Engine SELECT title, year, "imdbRating" FROM movies WHER E "imdbID" = %(imdb_id)s 2019-07-03 18:49:46,173 INFO sqlalchemy.engine.base.Engine {'imdb_id': 'tt1490017'} 2019-07-03 18:49:46,991 DEBUG sqlalchemy.engine.base.Engine Col ('title', 'year', 'imdbRating') 2019-07-03 18:49:46,991 DEBUG sqlalchemy.engine.base.Engine Row ('The Lego Movie', 2014, Decimal('7.8')) ('The Lego Movie', 2014, Decimal('7.8')) 2019-07-03 18:49:47,862 INFO sqlalchemy.engine.base.Engine SELECT * FROM reviews WHERE movie = %(movie_title )s 2019-07-03 18:49:47,863 INFO sqlalchemy.engine.base.Engine {'movie_title': 'The Lego Movie'} 2019-07-03 18:49:48,699 DEBUG sqlalchemy.engine.base.Engine Col ('movie', 'rating', 'username', 'review') [] {"title": "The Lego Movie", "year": 2014, "imdb_id": "tt1490017", "director": "Phil Lord, Christopher Miller ", "actors": "Will Arnett, Elizabeth Banks, Craig Berry, Alison Brie", "imdb_rating": 7.8, "review_count": 0 , "average_score": "N.A"} 127.0.0.1 - - [03/Jul/2019 18:49:49] "GET /api/tt1490017 HTTP/1.1" 200 - ```` Also, I used three print statements, ```` print(check_for_api) ......#some code(same as before) print(check_for_reviews_unsplitted) ......#some code again(same as before) print (apijson) ```` Thanks, Cravan
On 3/7/19, 12:07 AM, "Simon King" <sqlalchemy@googlegroups.com on behalf of si...@simonking.org.uk> wrote: You might want to try turning on debug logging for your SQL statements by passing echo="debug" when creating your engine: https://docs.sqlalchemy.org/en/13/core/engines.html#sqlalchemy.create_engine Amongst other things, this will show the values of parameters that you are passing to the database. I'm not sure what your problem is, but I notice that you are using "SELECT * FROM movies" to load your rows, and then you are assuming that the columns you get back are in a certain order. (You assume that the first column is title, the second is year, and the fifth is imdbrating). It's possible that the columns are coming back in a different order, and so the value you think is the title is actually something else. It would be better to explicitly list the columns you want, something like: SELECT title, year, imdbrating FROM movies WHERE "imdbID" = :imdb_id Alternatively, the rows that you get back from fetchall() actually know which columns they came from, so you could do this: # don't call list() here: check_for_api = check_for_api_unsplitted[0] # use dictionary-style access to get the individual values title = check_for_api["title"] Simon On Tue, Jul 2, 2019 at 3:33 PM Cravan <cravan...@gmail.com> wrote: > > Hi all, > > One of the other tasks for my movie review assignment is that I have to create api access to my website, which should return a json response including a review count. However, I have confirmed that I have entered a review for a specific movie and it prompts out in my html, but apparently when I try to print out the json I get 0 reviews for my review count. Can someone help me troubleshoot? Sorry if it sounds unclear. > > ```` > > @app.route("/api/<imdb_id>") > > def api(imdb_id): > > check_for_api_statement = sqlalchemy.text('SELECT * FROM movies WHERE "imdbID" = :imdb_id') > > check_for_api_unsplitted = engine.execute(check_for_api_statement, imdb_id=imdb_id).fetchall() > > res = requests.get("http://www.omdbapi.com/", params={"apikey": "c2c76d64", "i": imdb_id, "plot": "full"}) > > omdb_data = res.json() > > check_for_api = list(check_for_api_unsplitted[0]) > > title_unsplitted = check_for_api[0] > > title = check_for_api[0] > > year = check_for_api[1] > > imdb_id = imdb_id > > imdbrating = check_for_api[4] > > director = omdb_data['Director'] > > actors = omdb_data['Actors'] > > check_for_reviews_statement = sqlalchemy.text('SELECT * FROM reviews WHERE movie = :movie_title') > > check_for_reviews_unsplitted = engine.execute(check_for_reviews_statement, movie_title=title).fetchall() > > review_count = len(check_for_reviews_unsplitted) > > print(check_for_reviews_unsplitted) #this returns a blank list for some strange reason > > if len(check_for_reviews_unsplitted) != 0: > > check_for_reviews = check_for_reviews_unsplitted.split(',') > > score = float(check_for_reviews[4]) > > average_score = score/review_count > > else: > > average_score = "N.A" > > a = > > {"title":title,"year":year,"imdb_id":imdb_id,"director":director,"actors":actors,"imdb_rating":imdbrating,"review_count":review_count,"average_score":average_score} > > apijson = json.dumps(a, cls=CustomJsonEncoder) > > print (apijson) > > if len(check_for_api) != 0: > > return render_template("api.html", apijson=apijson) > > else: > > return render_template("error2.html", message="No such movie.") > > -- > SQLAlchemy - > The Python SQL Toolkit and Object Relational Mapper > > http://www.sqlalchemy.org/ > > To post example code, please provide an MCVE: Minimal, Complete, and Verifiable Example. See http://stackoverflow.com/help/mcve for a full description. > --- > You received this message because you are subscribed to the Google Groups "sqlalchemy" group. > To unsubscribe from this group and stop receiving emails from it, send an email to sqlalchemy+unsubscr...@googlegroups.com. > To post to this group, send email to sqlalchemy@googlegroups.com. > Visit this group at https://groups.google.com/group/sqlalchemy. > To view this discussion on the web visit https://groups.google.com/d/msgid/sqlalchemy/7DB000C8-1EBC-48AF-A24F-202196C743CF%40gmail.com. > For more options, visit https://groups.google.com/d/optout. -- SQLAlchemy - The Python SQL Toolkit and Object Relational Mapper http://www.sqlalchemy.org/ To post example code, please provide an MCVE: Minimal, Complete, and Verifiable Example. See http://stackoverflow.com/help/mcve for a full description. --- You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To unsubscribe from this group and stop receiving emails from it, send an email to sqlalchemy+unsubscr...@googlegroups.com. To post to this group, send email to sqlalchemy@googlegroups.com. Visit this group at https://groups.google.com/group/sqlalchemy. To view this discussion on the web visit https://groups.google.com/d/msgid/sqlalchemy/CAFHwexfVMZTVX6hKDvxgRFG0Wrc%3DhSfwU05XQGm%2B7gsRTtR_Cw%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout. -- SQLAlchemy - The Python SQL Toolkit and Object Relational Mapper http://www.sqlalchemy.org/ To post example code, please provide an MCVE: Minimal, Complete, and Verifiable Example. See http://stackoverflow.com/help/mcve for a full description. --- You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To unsubscribe from this group and stop receiving emails from it, send an email to sqlalchemy+unsubscr...@googlegroups.com. To post to this group, send email to sqlalchemy@googlegroups.com. Visit this group at https://groups.google.com/group/sqlalchemy. To view this discussion on the web visit https://groups.google.com/d/msgid/sqlalchemy/FD18A0DF-70BD-4867-BA8C-A90DD76E24A3%40gmail.com. For more options, visit https://groups.google.com/d/optout.