我想检查一个字符串是从HTML页面中的窗体传递。所以表单会提取用户名,然后检查数据库是否已经创建。如果没有,它会继续并创建它。我的错误位于查找用户名的逻辑部分。为什么我不能在我的mysql查询中使用python比较这些表单变量?
注意,我注释掉了一些地方的各种错误还冒出了:
import mysql.connector
import web
from mysql.connector import Error
import cgi, cgitb
cgitb.enable()
conn = mysql.connector.connect(host='localhost', database='database', user='root', password='root')
cursor = conn.cursor()
form = cgi.FieldStorage()
username = form.getvalue('username')
password = form.getvalue('password')
# check_existence = """
# SELECT username FROM members WHERE username = '%s'
# """
check_existence = """
SELECT username FROM members WHERE username = %s
"""
# cursor.execute(check_existence, username)
# "Wrong number of arguments during string formatting")
cursor.execute(check_existence, (username))
# ^pushes down to con.commit
# cursor.execute(check_existence, (username,))
# ^wrpmg number of arguments during string formatting
# with comma, the error is in commit, with comma, its in execute
conn.commit()
matches = cursor.rowcount()
现在的错误指向conn.commit。虽然这取决于语法,但有时它指向它上面的行。 错误:
=> 203 conn.commit()
<class 'mysql.connector.errors.InternalError'>: Unread result found.
args = (-1, 'Unread result found.', None)
errno = -1
message = ''
msg = 'Unread result found.'
啊,我以为.commit必须按照每个查询。 – munchschair
根据https://dev.mysql.com/doc/connector-python/en/connector-python-api-mysqlconnection-commit.html它在每个改变数据的语句之后。 – Redbeard011010
我拿出来了,但现在我得到'“字符串格式化过程中参数数量错误”)“'cursor.execute'' – munchschair