#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 для имен таблиц или столбцов, вы должны использовать вставку строк.