【发布时间】:2021-07-20 15:53:26
【问题描述】:
我是新来的,有人可以帮帮我吗?我正在开发一个组件比较器 webapp,第一页正常工作,但是当我点击“比较”(这将启动该功能并显示该页面)时,我只看到“正文”而不是该功能会做什么。服务器不显示错误消息。当我尝试在 VsCode 中手动启动该功能时,出现此错误:
aprixProc1 = connexion.execute('SELECT prixProc FROM Processeur WHERE nomProc=(?);',(processeur1,)).fetchone()[0]
TypeError: 'NoneType' object is not subscriptable
这是我的代码:
import sqlite3
import cgi
formulaire = cgi.FieldStorage()
processeur1 = formulaire.getvalue('proc1')
processeur2 = formulaire.getvalue('proc2')
connexion = sqlite3.connect("composants.db")
connexion.execute("PRAGMA foreign_keys = ON")
#Recupere le prix de proc1 et proc2
aprixProc1 = connexion.execute('SELECT prixProc FROM Processeur WHERE nomProc=(?);'(processeur1,)).fetchone()[0]
aprixProc2 = connexion.execute("SELECT prixProc FROM Processeur WHERE nomProc=(?);" (processeur2,)).fetchone()[0]
#Recupere le nb de coeurs de proc1 et proc2
anbCoeurs1 = connexion.execute("SELECT coeursProc FROM Processeur WHERE nomProc=(?)", (processeur1,)).fetchone()[0]
anbCoeurs2 = connexion.execute("SELECT coeursProc FROM Processeur WHERE nomProc=(?)",(processeur2,)).fetchone()[0]
#Recupere le nb de threads de proc1 et proc2
athreadsProc1 = connexion.execute("SELECT threadsProc FROM Processeur WHERE nomProc=(?)",(processeur1,)).fetchone()[0]
athreadsProc2 = connexion.execute("SELECT threadsProc FROM Processeur WHERE nomProc=(?)",(processeur2,)).fetchone()[0]
#Recupere la taille de gravure de proc1 et proc2
agravProc1 = connexion.execute("SELECT gravProc FROM Processeur WHERE nomProc=(?)",(processeur1,)).fetchone()[0]
agravProc2 = connexion.execute("SELECT gravProc FROM Processeur WHERE nomProc=(?)",(processeur2,)).fetchone()[0]
pagedebut = '''
<html>
<head>
<link rel="preconnect" href="https://fonts.gstatic.com">
<link href="https://fonts.googleapis.com/css2?family=Montserrat:wght@600&display=swap" rel="stylesheet">
<title> Components Stock Tracker </title>
<link rel='stylesheet' href="css/fichier_css_html.css"/>
</head>
<body>
<div class="entete">
<p class='phead'>Components Stock Tracker</p>
<img src ="images/logo_cst.jpg">
</div>
<div class="main">
'''
pagefin='''
</div>
<div class="footer">
<p class="texteFooter">
Pied de Page <br> Crédits: Baptiste Lecerf </br>
</p>
</div>
</body>
</html>
'''
def compareProc(prixProc1, prixProc2, nbCoeurs1, nbCoeurs2, threadsProc1, threadsProc2, gravProc1, gravProc2):
reponse = ''
if prixProc1 < prixProc2:
reponse += str(prixProc1)
else:
reponse+= str(prixProc2)
if nbCoeurs1 < nbCoeurs2:
reponse+= str(nbCoeurs2)
else:
reponse+= str(nbCoeurs1)
if threadsProc1 < threadsProc2:
reponse+= str(threadsProc2)
else:
reponse+= str(threadsProc1)
if gravProc1 < gravProc2:
reponse+= str(gravProc1)
else:
reponse+= str(gravProc2)
print(pagedebut+reponse+pagefin)
print(compareProc(aprixProc1, aprixProc2, anbCoeurs1, anbCoeurs2, athreadsProc1, athreadsProc2, agravProc1, agravProc2))
connexion.close()
【问题讨论】:
-
这不是您从数据库中获取结果的方式,您是否至少阅读过一篇关于如何做到这一点的教程? sqlitetutorial.net/sqlite-python/sqlite-python-select
-
这能回答你的问题吗? Python SQLite3 / Selecting rows from table
-
同样不要做4个请求来获取同一行的一个属性,在一个请求中检索
SELECT prixProc,coeursProc, threadsProc ,gravProc FROM Processeur WHERE nomProc=(?) -
@azro 是的,但是之后我如何比较每个属性?
-
无论您检索多少属性,或检索多少行,所有数据都在结果中,而不是只有一个元素的列表,而是多个元素的列表
标签: python database function sqlite web-applications