Sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) такой таблицы нетPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) такой таблицы нет

Сообщение Anonymous »

Я определил таблицу с именем user_table и запустил db.create_all(), чтобы создать таблицу, но получил ошибку «нет такой таблицы user_table» при фиксации для обновления информации о пользователе.
Как я тестирую:
(under /project) python3 manage.py shell
>>> u = User(email='[email protected]', username='foobar', password='player')
>>> db.create_all()
>>> db.session.add(u)
>>> db.session.commit() # with following error message
Traceback (most recent call last):
File "C:\...\Python\Python36-32\lib\site-packages\sqlalchemy\engine\base.py", line 1182, in _execute_context
context)
File "C:\...\Python\Python36-32\lib\site-packages\sqlalchemy\engine\default.py", line 470, in do_execute
cursor.execute(statement, parameters)
sqlite3.OperationalError: no such table: users_table
...
...
sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such table: users_table

/project/app/\_\_init__.py:
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from config import config

db = SQLAlchemy()

def create_app(config_name):
app = Flask(__name__)
app.config.from_object(config[config_name])
config[config_name].init_app(app)
db.init_app(app)
return app

/project/app/models.py:
import os
from flask_sqlalchemy import SQLAlchemy
from werkzeug.security import generate_password_hash
from flask import Flask

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

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///' + os.path.join(basedir, 'data.sqlite')
app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN'] = True
db = SQLAlchemy(app)

class User(db.Model):
__tablename__ = 'users_table'
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)
password_hash = db.Column(db.String(128))

def __repr__(self):
return '' % self.username

@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)

project/config.py:
import os
basedir = os.path.abspath(os.path.dirname(\__file__))

class Config:
SECRET_KEY = os.environ.get('SECRET_KEY') or 'fhuaioe7832of67^&*T#oy93'
SQLALCHEMY_COMMIT_ON_TEARDOWN = True

@staticmethod
def init_app(app):
pass

class DevelopmentConfig(Config):
DEBUG = True
SQLALCHEMY_DATABASE_URI = 'sqlite:///' + os.path.join(basedir, 'data.sqlite')

config = {
'development': DevelopmentConfig,
'default': DevelopmentConfig,
}

project/manage.py:
import os
from app import create_app, db
from app.models import User
from flask_script import Manager, Shell

app = create_app(os.getenv('FLASK_CONFIG') or 'default')
manager = Manager(app)

def make_shell_context():
return dict(app=app, db=db, User=User)

manager.add_command("shell", Shell(make_context=make_shell_context))

if __name__ == '__main__':
manager.run()


Подробнее здесь: https://stackoverflow.com/questions/449 ... such-table
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»