我使用Flask-Testing并使文件test_app.py进行测试但是我从app import create_app获得了此错误文件"test_app.py",第4行,db ImportError:没有名为app的模块.所以请帮助我如何解决它,问题是什么Thanx :)
这是我的结构:
myapplication
app
__ init __.py
model.py
form.py
autho
layout
static
templates
migrations
test
-test_app.py
config.py
manage.py
Run Code Online (Sandbox Code Playgroud)
test_app.py
#!flask/bin/python
import unittest
from flask.ext.testing import TestCase
from app import create_app, db
from app.model import Users
from flask import request, url_for
import flask
class BaseTestCase(TestCase):
def create_app(self):
self.app = create_app('testing')
return self.app
Run Code Online (Sandbox Code Playgroud)
config.py
class TestingConfig(Config):
TESTING = True
SQLALCHEMY_DATABASE_URI = os.environ.get('TEST_DATABASE_URL') or \
'sqlite:///' + os.path.join(basedir, 'mytest.sqlite')
Run Code Online (Sandbox Code Playgroud)
__ init __.py
#!flask/bin/python
from flask import Flask
from flask.ext.sqlalchemy …
Run Code Online (Sandbox Code Playgroud) 我想从我的模型中删除一行,该行具有带有 postgresql 的foreignkey。但我收到了这个错误:
IntegrityError:(IntegrityError)表“users”上的更新或删除违反了表“users”上的外键约束“users_bestfriend_id_fkey”详细信息:键(id)=(3)仍然从表“users”中引用。'从用户中删除,其中 users.id = %(id)s' {'id': 3}
我认为要解决这个问题,我应该使用 CASCADE,但不知道如何在我的模型中使用它,所以如果你帮忙的话,谢谢:)
模型.py:
friends = db.Table('friends',
db.Column('user_id', db.Integer, db.ForeignKey('users.id')),
db.Column('friend_id', db.Integer, db.ForeignKey('users.id'))
)
class Users(db.Model):
id = db.Column(db.Integer, primary_key = True)
name = db.Column(db.String(50), index=True)
age= db.Column(db.Integer )
email = db.Column(db.String(50),index=True, unique= True)
bestfriend_id = db.Column(db.Integer, db.ForeignKey('users.id'))
is_bestfriend = db.relationship( 'Users', uselist=False, remote_side=[id], post_update=True)
Run Code Online (Sandbox Code Playgroud)
视图.py:
# delete user profile
@layout.route('/delete/<int:id>')
@login_required
def delete(id):
user = Users.query.get_or_404(id)
if g.user.id == user.id:
flash('You are not allow to delete yourself.')
else: …
Run Code Online (Sandbox Code Playgroud) 我运行命令heroku run init
并收到此错误。我该如何解决?
manager.run()
File "/app/.heroku/python/lib/python2.7/site-packages/flask_script/__init__.py", line 412, in run
result = self.handle(sys.argv[0], sys.argv[1:])
File "/app/.heroku/python/lib/python2.7/site-packages/flask_script/__init__.py", line 383, in handle
res = handle(*args, **config)
File "/app/.heroku/python/lib/python2.7/site-packages/flask_script/commands.py", line 216, in __call__
return self.run(*args, **kwargs)
File "/app/.heroku/python/lib/python2.7/site-packages/flask_migrate/__init__.py", line 61, in init
command.init(config, directory, 'flask')
File "/app/.heroku/python/lib/python2.7/site-packages/alembic/command.py", line 28, in init
raise util.CommandError("Directory %s already exists" % directory)
alembic.util.CommandError: Directory migrations already exists
Run Code Online (Sandbox Code Playgroud)
管理.py:
app = create_app(os.environ.get('FLASK_CONFIG', 'default'))
magrate = Migrate(app, db)
manager = Manager(app)
manager.add_command('db', MigrateCommand)
@manager.command
def init_db():
db.drop_all() …
Run Code Online (Sandbox Code Playgroud)