在Flask-SQLAlchemy中使用Mixer

时间:2014-03-19 15:26:51

标签: python testing flask sqlalchemy

我正在尝试使用mixer为由Flask + SQLAlchemy提供支持的网站生成测试数据。

我在项目的根目录中创建了一个名为generate_test_data.py的文件,如下所示:

# -*- coding: utf-8 -*-

import app
from mixer.backend.flask import mixer
from models import *

def generate_test_data():
        user = mixer.blend(Users)

if __name__ == "__main__":
        generate_test_data()

然而,每次运行文件时都会出现以下错误:

Traceback (most recent call last):
  File "generate_test_data.py", line 3, in <module>
    import app
ImportError: No module named app

我正在使用正确的virtualenv激活。

更新

我的项目结构如下:

/
 - generate_test_data.py
 - app/
 -- __init__.py
 -- models.py

**更新**

我的__init__.py

# -*- coding: utf-8 -*-

from flask import Flask
from flask.ext.sqlalchemy import SQLAlchemy
from flask.ext.uwsgi_websocket import GeventWebSocket
from config import REDIS_HOST, REDIS_PORT
import redis


app = Flask(__name__)
db = SQLAlchemy(app)
ws = GeventWebSocket(app)

POOL = redis.ConnectionPool(host=REDIS_HOST, port=REDIS_PORT, db=0)
redis = redis.Redis(connection_pool=POOL)

from app import views, models

1 个答案:

答案 0 :(得分:1)

我会将您的项目结构重新构建为:

myproject/
    generate_test_data.py
    __init__.py
    models.py

然后,在generate_test_data.py中,你可以做到

from myproject import app

这样会更好,因为您要删除任何名称冲突。此外,您明确要导入您真正想要的app变量。你当然可以命名&#34; myproject&#34;无论你想要什么,但不要命名它#34; app&#34;为了安全