Python 错误:在Flask中找不到数据库

Python 错误:在Flask中找不到数据库,python,flask,Python,Flask,这是我在Flask中创建的一个基本登录表单,但是这个错误出现在注册页面上 mysql_exceptions.OperationalError _mysql_exceptions.OperationalError: (1046, 'No database selected') 我得到一个找不到数据库的错误。错误是什么?它没有连接到数据库。我在Python 3.6中使用了MySQL: from flask import Flask, render_template, flash, redirect

这是我在Flask中创建的一个基本登录表单,但是这个错误出现在注册页面上

mysql_exceptions.OperationalError
_mysql_exceptions.OperationalError: (1046, 'No database selected')
我得到一个找不到数据库的错误。错误是什么?它没有连接到数据库。我在Python 3.6中使用了MySQL:

from flask import Flask, render_template, flash, redirect, url_for, session, 
logging, request
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__)

# db = MySQLdb.connect('localhost','root','','myflaskapp')
#Config Mysql
app.config['MySQL_HOST'] = 'localhost'
app.config['MySQL_USER'] = 'root'
app.config['MySQL_PASSWORD'] = ''
app.config['MySQL_DB'] = 'myflaskapp'
app.config['MySQL_CURSORCLASS'] = 'DictCursor'

mysql = MySQL(app)

Articles = Articles()

@app.route('/')
def index():
   return render_template('home.html')

@app.route('/link')
def link():
   return render_template("link.html")

@app.route('/articles')
def articles():
    return render_template('articles.html', articles =  Articles)

@app.route('/articles/<string:id>/')
def article(id):
    return render_template('article.html' , id=id)

class RegisterForm(Form):
    name = StringField('Name',[validators.Length(min=2,max = 50)])
    username = StringField('Username',[validators.Length(min = 4, max=25)])
    email = StringField('Email', [validators.Length(min=6, max=50)])
    password = PasswordField('Password',[
        validators.DataRequired(),
        validators.EqualTo('confirm',message="Passwords do not match")
    ])
    confirm = PasswordField('Confirm Password')


 @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 = sha256_crypt.encrypt(str(form.password.data))

         cur = mysql.connection.cursor()

         cur.execute("INSERT INTO users(name,username,email,password) 
         VALUES(%s,%s,%s,%s)",(name,username,email,password))

         mysql.connection.commit()
         cur.close()

         flash("You are nor registered and login", "success")
         redirect(url_for('index'))

         return render_template('register.html', form = form)
      return render_template('register.html', form = form)

 if __name__ == "__main__":
      app.secret_key = 'secret123'
      app.run(debug = True)
从flask导入flask、渲染模板、flash、重定向、url、会话、,
日志记录,请求
从数据导入文章
从flask_mysqldb导入MySQL
从wtforms导入表单、StringField、TextAreaField、PasswordField、,
验证器
从passlib.hash导入sha256_crypt
app=烧瓶(名称)
#db=MySQLdb.connect('localhost','root','','myflaskapp')
#配置Mysql
app.config['MySQL\u HOST']='localhost'
app.config['MySQL\u USER']='root'
app.config['MySQL_PASSWORD']=''
app.config['MySQL_DB']='myflaskapp'
app.config['MySQL\u CURSORCLASS']='DictCursor'
mysql=mysql(应用程序)
文章=文章()
@应用程序路径(“/”)
def index():
返回渲染模板('home.html')
@app.route(“/link”)
def link():
返回渲染模板(“link.html”)
@app.route(“/articles”)
def articles():
返回呈现模板('articles.html',articles=articles)
@app.route(“/articles/”)
def物品(id):
返回呈现模板('article.html',id=id)
注册类别(表格):
name=StringField('name',[validators.Length(最小值=2,最大值=50)])
username=StringField('username',[validators.Length(最小=4,最大=25)])
email=StringField('email',[validators.Length(最小=6,最大=50)])
password=PasswordField('password'[
validators.DataRequired(),
validators.EqualTo('confirm',message=“密码不匹配”)
])
确认=密码字段(“确认密码”)
@app.route('/register',methods=['GET','POST'])
def寄存器():
form=RegisterForm(request.form)
如果request.method==“POST”和form.validate():
name=form.name.data
电子邮件=form.email.data
用户名=form.username.data
password=sha256_crypt.encrypt(str(form.password.data))
cur=mysql.connection.cursor()
cur.execute(“插入用户(名称、用户名、电子邮件、密码)
值(%s,%s,%s,%s)”,(名称、用户名、电子邮件、密码)
mysql.connection.commit()
当前关闭()
flash(“您未注册并登录”,“成功”)
重定向(url_用于('index'))
返回呈现模板('register.html',form=form)
返回呈现模板('register.html',form=form)
如果名称=“\uuuuu main\uuuuuuuu”:
app.secret_key='secret123'
app.run(debug=True)

在代码顶部添加以下配置参数。请注意,
userpass
必须包含数据库用户名和密码
socket
是mysql套接字文件在XAMPP目录中的位置

app.config['SECRET_KEY'] = 'some secret string here'

userpass = 'mysql+pymysql://root:@'
basedir  = '127.0.0.1'
dbname   = '/nameofdatabase'
socket   = '?unix_socket=/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock'
dbname   = dbname + socket
app.config['SQLALCHEMY_DATABASE_URI'] = userpass + basedir + dbname

app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True

您是否尝试从终端连接到数据库?可能您的本地数据库服务器没有启动
mysql-u root-p
,也可能根本没有创建名为
myflaskapp
的数据库?我已经在xampp中创建了数据库。并创建了数据库。