Heim  >  Fragen und Antworten  >  Hauptteil

Python – Flaschenkopie-Quellcode Kapitel 8 Benutzerrollenfehler tritt auf

Ich habe Kapitel 8 am Nachmittag beendet. Ich kann mich auf der Webseite anmelden und keine E-Mail-Nachrichten senden. Daher ist ein neues Problem aufgetreten Der Unterschied zwischen mir und dem Quellcode ist die Datenbankkonfiguration. Ich habe die Adresse direkt eingegeben und kann auch meine E-Mail-Adresse eingeben.
Es wurde zuvor getestet. Es gab keinen Fremdschlüssel im Zusammenhang mit der Datenbankmigration, also habe ich es auch versucht, bin mir aber nicht sicher, ob es ein Problem mit der Datenbank gibt Ich. Vielen Dank im Voraus

Error

sqlalchemy.exc.ProgrammingError

sqlalchemy.exc.ProgrammingError: (pymysql.err.ProgrammingError) (1146, „Tabelle ‚flask.users‘ existiert nicht“) [SQL: 'SELECT users.id AS users_id, Benutzer .email AS benutzer-email, benutzer.benutzername AS benutzer_benutzername, benutzer.role_id AS benutzerrollen-id, benutzer.passwort_hash BENUTZER_passwort_hash, benutzer.confirmed AS benutzer_bestätigt nFROM benutzer nWHERE benutzer.id = %(param_1)s'] [parameter: {'param_1': 1}]

#coding:utf-8

import os
basedir = os.path.abspath(os.path.dirname(__file__))

class Config:
    SECRET_KEY = 'hard to guess string'
    SSL_DISABLE = False
    SQLALCHEMY_COMMIT_ON_TEARDOWN = True
    SQLALCHEMY_TRACK_MODIFICATIONS = False
    SQLALCHEMY_RECORD_QUERIES = True
    MAIL_SERVER = 'smtp.163.com'
    MAIL_PORT = 25
    MAIL_USE_TLS = True
    MAIL_USERNAME = ('13166337919@163.com')
    MAIL_PASSWORD = ('a123123')
    FLASKY_MAIL_SUBJECT_PREFIX = '[Flasky]'
    FLASKY_MAIL_SENDER = 'Flasky Admin <13166337919@163.com>'
    FLASKY_ADMIN = ('626825701@qq.com')



    @staticmethod
    def init_app(app):
        pass


class DevelopmentConfig(Config):
    DEBUG = True
    SQLALCHEMY_DATABASE_URI ='mysql+pymysql://root:123456@127.0.0.1/flask'



class TestingConfig(Config):
    TESTING = True
    SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://root:123456@127.0.0.1/text'


class ProductionConfig(Config):
    SQLALCHEMY_DATABASE_URI ='mysql+pymysql://root:123456@127.0.0.1/pro'


config = {
    'development': DevelopmentConfig,
    'testing': TestingConfig,
    'production': ProductionConfig,


    'default': DevelopmentConfig
}
from werkzeug.security import generate_password_hash, check_password_hash
from itsdangerous import TimedJSONWebSignatureSerializer as Serializer
from flask import current_app
from flask_login import UserMixin
from . import db, login_manager


class Role(db.Model):
    __tablename__ = 'roles'
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(64), unique=True)
    users = db.relationship('User', backref='role', lazy='dynamic')

    def __repr__(self):
        return '<Role %r>' % self.name


class User(UserMixin, db.Model):
    __tablename__ = 'users'
    id = db.Column(db.Integer, primary_key=True)
    email = db.Column(db.String(64), unique=True, index=True)
    username = db.Column(db.String(64), unique=True, index=True)
    role_id = db.Column(db.Integer, db.ForeignKey('roles.id'))
    password_hash = db.Column(db.String(128))
    confirmed = db.Column(db.Boolean, default=False)

    @property
    def password(self):
        raise AttributeError('password is not a readable attribute')

    @password.setter
    def password(self, password):
        self.password_hash = generate_password_hash(password)

    def verify_password(self, password):
        return check_password_hash(self.password_hash, password)

    def generate_confirmation_token(self, expiration=3600):
        s = Serializer(current_app.config['SECRET_KEY'], expiration)
        return s.dumps({'confirm': self.id})

    def confirm(self, token):
        s = Serializer(current_app.config['SECRET_KEY'])
        try:
            data = s.loads(token)
        except:
            return False
        if data.get('confirm') != self.id:
            return False
        self.confirmed = True
        db.session.add(self)
        return True

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


@login_manager.user_loader
def load_user(user_id):
    return User.query.get(int(user_id))
世界只因有你世界只因有你2690 Tage vor726

Antworte allen(1)Ich werde antworten

  • 阿神

    阿神2017-05-18 10:49:39

    报错已经很明确了
    (pymysql.err.ProgrammingError) (1146, "Table 'flask.users' doesn't exist")

    Antwort
    0
  • StornierenAntwort