MySQLdb._экскрипции.Ошибка программирования при запуске моей программы на Flask

#mysql #flask

Вопрос:

Я пытаюсь создать регистрационную форму на flask, но при запуске файла я получаю сообщение об ошибке,

«MySQLdb._выражения.Ошибка программирования: (1064, «У вас ошибка в синтаксисе SQL; проверьте руководство,соответствующее версии вашего сервера MariaDB,для правильного использования синтаксиса рядом с»имя пользователя, адрес электронной почты, пароль)»в строке 1″)»

Я в замешательстве, так как такой строки кода не существует ни в одной «строке 1» моих файлов. Ниже приведен соответствующий код. Любая помощь будет признательна.

код в app.py

 from flask import (  Flask,  render_template,  flash,  redirect,  url_for,  session,  request,  logging, ) from passlib.hash import sha256_crypt from flask_mysqldb import MySQL  from sqlhelpers import *  app = Flask(__name__)  app.config["MYSQL_HOST"] = "localhost" app.config["MYSQL_USER"] = "USER" app.config["MYSQL_PASSWORD"] = "PASSWORD" app.config["MYSQL_DB"] = "crypto" app.config["MYSQL_CURSORCLASS"] = "DictCursor"  mysql = MySQL(app)   @app.route("/") def index():  users = Table("users", "name", "username", "email", "password")  return render_template("index.html")   if __name__ == "__main__":  app.secret_key = "SECRET"  app.run(debug=True)  

соответствующий код в sqlhelpers.py

 from app import mysql, session  class Table:  def __init__(  self, table_name, *args  ): # *args means that a list would be the argument  self.table = table_name  self.columns = "(%s)" % ",".join(args)   if isnewtable(table_name):  cur = mysql.connection.cursor()  cur.execute("CREATE TABLE %s%s" % (self.table, self.columns))  cur.close()  def isnewtable(tableName):  cur = mysql.connection.cursor()   try:  result = cur.execute("SELECT * FROM %stableName")  cur.close()  except:  return True # table doesnt exist  else:  return False # table exists already   def isnewuser(username):  users = Table("users", "name", "email", "username", "password")  data = users.getall()  usernames = [user.get("username") for user in data]   return False if username in usernames else True  

Комментарии:

1. вы не можете использовать заполнитель %s для имен таблиц или столбцов, вы должны использовать вставку строк.