在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Python/ flask-sqlalchemy插入數(shù)據(jù)報(bào)錯(cuò)sqlalchemy.exc.Ope

flask-sqlalchemy插入數(shù)據(jù)報(bào)錯(cuò)sqlalchemy.exc.OperationalError

使用flask-sqlalchemy 操作mysql數(shù)據(jù)庫(kù)時(shí),注冊(cè)頁(yè)面填寫的信息無法添加到mysql數(shù)據(jù)庫(kù)中。
代碼如下:

db2.py


from flask import Flask
from flask_sqlalchemy import SQLAlchemy
import pymysql
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://comejack:123456@localhost:3306/flask'
db = SQLAlchemy(app)

class User(db.Model):
    __tablename__ = 'user'
    id = db.Column(db.Integer, primary_key = True)
    username = db.Column(db.String(80), unique = True, nullable = False)
    password = db.Column(db.String(80), nullable = False)
    email = db.Column(db.String(120), unique = True, nullable = False)

    def __repr__(self):
        return '<User %r>' % self.username
db.create_all()

forms.py

from wtforms.fields import BooleanField, TextField, StringField, PasswordField, SubmitField
from wtforms import validators
from wtforms.validators import DataRequired
from flask_wtf import FlaskForm

class RegForm(FlaskForm):
    username = StringField('username', validators = [DataRequired()])
    password = PasswordField('password', validators = [DataRequired()])
    email = StringField('email', validators = [DataRequired()])
    submit = SubmitField('Sign Up')

run.py

# -*- coding:UTF-8 -*---
from flask import Flask, render_template, flash, redirect, request
from forms import LoginForm, RegForm
from flask_wtf.csrf import CSRFProtect
from forms import *
from db2 import *
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True
db.init_app(app)
CSRFProtect(app)

@app.route('/reg/', methods = ['GET','POST'])
def reg():
    form = RegForm()
    if form.validate_on_submit():
        user1 = User(id = 1, username = form.username.data, password = form.password.data, email = form.email.data)
        print (user1)
        db.session.add(user1)
        db.session.commit()
    return render_template('reg.html', title = 'Sign up', form = form)

app.run(host = '0.0.0.0', port = 9000, debug = True)

reg.html


{% extends "base.html" %}
{% block content %}
<h1>reg</h1>
<form action="" method="POST" name="reg">
    {{form.csrf_token}}
    <p>please enter your username:<br>
    {{form.username}} <br>
    </p>
    <p>please enter your password:<br>
    {{form.password}}<br>
    </p>
    <p>please enter your email:<br>
    {{ form.email }}<br>
    </p>
    <p>{{ form.submit }}</p>
</form>
{% endblock %}

運(yùn)行python3 run.py后,在reg頁(yè)面輸入注冊(cè)的用戶名 密碼 郵箱后。點(diǎn)擊提交,出現(xiàn)報(bào)錯(cuò)
sqlalchemy.exc.OperationalError
sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such table: user [SQL: 'INSERT INTO user (id, username, password, email) VALUES (?, ?, ?, ?)'] [parameters: (1, '123123', '123123', 'c122@126.com')] (Background on this error at: http://sqlalche.me/e/e3q8)

請(qǐng)問如何解決。

回答
編輯回答
晚風(fēng)眠

親,這個(gè)問題解決了么,遇到了同樣的問題

2017年1月28日 23:32
編輯回答
骨殘心

把 db2.py 里的三句代碼

import pymysql
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://comejack:123456@localhost:3306/flask'

清空, 然后寫到 run.py 文件里。

2018年6月22日 07:17
編輯回答
離殤

配置的是mysql, 報(bào)錯(cuò)的卻是sqlite3, 你的數(shù)據(jù)庫(kù)配置沒有指對(duì)吧,倒底用的是什么庫(kù)呢, db類如何定義的?
提示沒有user這個(gè)表,需要核對(duì)下倒底有沒有

2017年9月2日 18:33