Exception on /viewreports [POST]
2021-06-19T01:55:40.057253+00:00 app[web.1]: Traceback (most recent call last):
packages/sqlalchemy/engine/base.py", line 1276, in _execute_context
-packages/sqlalchemy/engine/default.py", line 608, in do_execute
2021-06-19T01:55:40.057256+00:00 app[web.1]: cursor.execute(statement, parameters)
2021-06-19T01:55:40.057257+00:00 app[web.1]: psycopg2.errors.SyntaxError: syntax error at or near ")"
2021-06-19T01:55:40.057258+00:00 app[web.1]: LINE 1: ... ON usersport.sport_id=sport.sport_id WHERE sport_name=(?)
2021-06-19T01:55:40.057259+00:00 app[web.1]: The above exception was the direct cause of the following exception:
2021-06-19T01:55:40.057259+00:00 app[web.1]:
2021-06-19T01:55:40.057260+00:00 app[web.1]: Traceback (most recent call last):
2021-06-19T01:55:40.057275+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.9/site-packages/flask/app.py", line 2447, in wsgi_app
2021-06-19T01:55:40.057275+00:00 app[web.1]: response = self.full_dispatch_request()
2021-06-19T01:55:40.057279+00:00 app[web.1]: File "/app/schoolsports/routes.py", line 269, in viewreports
2021-06-19T01:55:40.057285+00:00 app[web.1]: result1=db.engine.execute("SELECT user_id FROM usersport INNER JOIN sport ON usersport.sport_id=sport.sport_id WHERE sport_name=(?) ",(value))
2021-06-19T01:55:40.057289+00:00 app[web.1]: self.dialect.do_execute(
2021-06-19T01:55:40.057289+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 608, in do_execute
2021-06-19T01:55:40.057290+00:00 app[web.1]: cursor.execute(statement, parameters)
2021-06-19T01:55:40.057290+00:00 app[web.1]: sqlalchemy.exc.ProgrammingError: (psycopg2.errors.SyntaxError) syntax error at or near ")"
2021-06-19T01:55:40.057290+00:00 app[web.1]: LINE 1: ... ON usersport.sport_id=sport.sport_id WHERE sport_name=(?)
2021-06-19T01:55:40.057290+00:00 app[web.1]: ^
2021-06-19T01:55:40.057291+00:00 app[web.1]:
2021-06-19T01:55:40.057291+00:00 app[web.1]: [SQL: SELECT user_id FROM usersport INNER JOIN sport ON usersport.sport_id=sport.sport_id WHERE sport_name=(?) ]
2021-06-19T01:55:40.057291+00:00 app[web.1]: [parameters: ('taekwondo',)]
2021-06-19T01:55:40.057291+00:00 app[web.1]: (Background on this error at: http://sqlalche.me/e/13/f405)
2021-06-19T01:55:40.058121+00:00 app[web.1]: 10.45.135.21 - - [19/Jun/2021:01:55:40 +0000] "POST /viewreports HTTP/1.1" 500 290 "https://mymodule.herokuapp.com/viewreports"
我已经将我的flask web应用程序部署到Heroku,Heroku最初使用的是SQLite本地数据库,我的所有命令都可以正常工作。现在,当我部署到Heroku并使用PostgreSQL数据库时,我会遇到一些语法和编程错误,如上图所示。我没有在本地得到这些错误,现在当我部署之后,我得到了这些错误。请告知,我的代码如下:
list2=[]
mainlist=[]
tables=""
finalreportlist=[]
excelbutton=False
if request.method=='POST':
sectionSelected=False
classSelected= False
houseselected=False
sectionwithoutclass=False
nostudentinlist=False
nosport=False
###checking whether a a class is selected in the form. Part of form processing
if request.form["class1"]!='all':
classSelected= True
##form data of class
formclass=(request.form["class1"])
##checking whether a section is entered ###
if request.form['section']!='all':
sectionSelected = True
###form data of seciton
formsection=(request.form["section"])
if request.form["house"] !='all':
houseselected= True
formhouse=(request.form["house"])
##get sport form data in a loop example first badminton\
if not request.form.getlist("sport"):
nosport=True
if request.form.getlist("sport") and (request.form.get("eventname")):
flash("Select either the sport or event. Not both",'danger')
else:
for value in request.form.getlist("sport"):
##getting user ids with given sport
result1=db.engine.execute("SELECT user_id FROM usersport INNER JOIN sport ON usersport.sport_id=sport.sport_id WHERE sport_name=(?) ",(value))
##adding all user ids to a list
for a in result1:
#print("a",a) # for appending user ids to a list
list2.append(a)
#getting all details of the user from that user table
query=db.engine.execute("SELECT grrno,firstname,lastname,House,Class,Section,Rollno FROM user WHERE user.id IN(?)" ,(a))
#iterating through users
######query is a list of all user details. b is going though each
for b in query:
#print("User id is",b)
#print("User name is",b.firstname)
##abc contnains each user full object with details 1 by 1
abc=b.items()
##contains dictionary of 1 isngle user looping
dictversion=(dict(abc))
#print("Selected class dictversion is",dictversion["Class"])
##data in the students class reocrd lika 1,2,3,4
classdata=dictversion["Class"]
##data in students secrion record like a,b,c,d
sectiondata=dictversion["Section"]
if classSelected==True and sectionSelected == True :
if int(classdata)==int(formclass) and formsection==sectiondata:
mainlist.append(dictversion)
print("Appended in both section and class",mainlist)
if classSelected==True and sectionSelected==False:
if int(classdata)==int(formclass) :
mainlist.append(dictversion)
print("Class true section false")
if classSelected==False and sectionSelected==True:
sectionwithoutclass=True
if classSelected==False and sectionSelected==False:
mainlist.append(dictversion)
print("Class false section false")
#if (sectionSelected==False and classSelected== False) and houseselected==False:
# mainlist.append(dictversion)
# print("All false")
print("\n^^^^^^MAIN LIST^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^",mainlist)
if houseselected==True:
for element in mainlist:
print("Element=",element)
print("Final list before if is",finalreportlist)
#print("form data is",formhouse)
#print("dict data is",element['House'])
if element['House'] ==formhouse:
finalreportlist.append(element)
print("\nFinal list after if is",finalreportlist)
else:
print("eneterd else")
finalreportlist=mainlist
```
Python DB-API连接器包定义了一个名为参数样式的值,该值表示在查询中如何表示VALUES
占位符。
Sqlite使用“qmark”样式,因此值由问号表示
q = 'SELECT name FROM users WHERE id = ?'
Psycopg2使用“pyformat”样式“%s”
q = 'SELECT name FROM users WHERE id = %s'
因此,如果您将使用“qmark”样式的查询传递给心理学2执行,您会得到一个错误。
幸运的是,SQLAlChemy提供了一种独立于基础数据库连接器编写原始SQL查询的方法。通过使用“命名”参数样式,并从查询中创建文本对象,SQLAlChemy将自动为基础连接器生成正确的语句。请注意,参数值必须在字典中传递。
import sqlalchemy as sa
...
q = 'SELECT name FROM users WHERE id = :id'
result = engine.execute(sa.text(q), {'id': 42})
问题内容: 我在遵循MySQL语法指南时遇到语法错误。 我的查询是: 从逻辑上讲,这应该选择,但是我得到了 问题答案: 您的查询仅在存储过程/函数上下文中有效。参见那里以供参考。
问题内容: 我最近在Java PreparedStatements中遇到了此问题。我有以下代码: 方法在哪里 但是,它总是抛出此错误: 当我以幼稚的方式执行“ …”时,不会发生此问题,但我希望以此方式进行。 任何帮助深表感谢。 更新 我尝试了社区的各种建议,例如 仍然出现错误信息。 问题答案: 解决问题的方法实际上非常简单,当您要调用PreparedStatement.executeQuery()
我正在为我的数据库使用Sequelize(6.3.0)和sqlite3(4.2.0),并试图定义以下模型: 它应该在进程启动时定义,但我得到以下错误: 当然,每当我试图对此表执行任何操作时,都会出现以下错误: 我猜问题来自使用数组数据类型的“参与”和“赢家”行。 谢谢你的帮助
问题内容: 我目前在我的Web应用程序中使用jQuery,Twitter Bootstrap和AngularJS。我一直在尝试进行路由,但是`Syntax error, unrecognized expression: 我需要在我的AngularJS路由中使用斜杠(即,并将在我的div中加载不同的内容)。可能是什么原因导致此错误? 问题答案: 我猜在指定目标时要多加斜杠。删除它们,它应该可以正常工
我最近在Java PreparedStatements中遇到了这个问题。我有以下代码: 其中方法是 但是,它一直抛出这个错误: 当我以幼稚的方式做“...
目前遇到此语法错误,错误发布在代码下方。 上面的代码,无法找出if语句上的语法错误。错误消息将很快粘贴为注释
问题内容: 为什么Python在第9行的简单语句中给我一个语法错误? Python的版本是: 问题答案: 在Python 3中,print是一个函数,您需要像这样调用它。
问题内容: 我正在尝试在Go中执行MERGE语句: 但是我得到了这个错误: 在MySQL中也是如此: 怎么了? 问题答案: 不支持,等效的是 插入…在重复的密钥更新上 尝试这个, 但请确保将其设置为或。