Я создал очень простое веб-приложение, используя Flask, и у меня подключена база данных MySQL.К вашему сведению, я использую bash для windows.
Следующая функция регистрирует человека в базе данных Mysql, и она работает как положено.Объект курсора определен и данные сохранены в MySQL.
@app.route('/register', methods=['GET','POST'])
def register():
form = RegisterForm(request.form)
if request.method == 'POST' and form.validate():
name = form.name.data
email = form.email.data
username = form.username.data
password = hash.encrypt(str(form.password.data))
# Create cursor
cur = mysql.connection.cursor()
cur.execute("INSERT INTO users(name, email, username, password) VALUES(%s, %s, %s, %s)",
[name, email, username, password])
# commit to db
mysql.connection.commit()
# close connection
cur.close()
flash('You are now registered and can log in', 'success')
return redirect(url_for('login'))
return render_template('register.html', form=form)
Проблема начинается, когда я хочу загрузить данные из mysql:
def data():
cur = mysql.connection.cursor()
cur.execute("SELECT * FROM users")
mysql.connection.commit()
cur.close()
data()
Я получаю ошибку:
Файл "app.py", строка 23, в данных cur = mysql.connection.cursor () AttributeError: Объект 'NoneType' не имеет атрибута 'cursor'
Как указано@Martijn Pieters, это означает, что я не смог подключиться к базе данных mysql.Вопрос в том, почему колба подключается без проблем в первой функции и имеет проблемы со второй функцией?
Ниже приведен мой импорт для репликации:
from flask import Flask, render_template, flash, request, redirect, url_for, session, logging, url_for
from data import Articles
from flask_mysqldb import MySQL
from wtforms import Form, StringField, TextAreaField, PasswordField, validators
from passlib.hash import sha256_crypt
app = Flask(__name__)
#init MYSQL
mysql=MySQL(app)