从视图调用初始化数据库函数

时间:2015-03-06 10:59:59

标签: python pyramid

我的网络应用程序有一个模板,允许用户上传文件。文件的内容存储在变量中。

我希望将文件传递给视图(views.py),而视图又调用initializedb.py脚本中的函数。我想只执行 函数而不是整个initializedb.py脚本(涉及大量插入)。我的初始化数据库函数将.csv文件作为输入,并将其内容插入数据库。

我的问题是如何通过我的观点调用initializedb.py中的函数?

在我的模板中: -

$.post(
    "{{request.route_url('passer_view')}}", // view that should invoke the insert function
    {'data': filecontents} //file contents will be my global variable that holds the contents of the file
);  

我的views.py: -

@view_config(route_name='passer_view' renderer="mytem.pt")
def insert(request):
    data = request.POST["data"]
    csvify_data(data) #this function makes renames the data into a csv file
    ###i should invoke the initializedb.py function here
    return HTTPFound(location=...)

我的initializedb.py: -

def main(argv=sys.argv):
    #a whole load of engine creation and stuffs
    with transaction.manager:
        def insertfunction(csvfile):
            DBSession.add(...)

如何做到这一点?有没有其他办法可以做我正在做的事情?任何想法都表示赞赏。 提前谢谢。

1 个答案:

答案 0 :(得分:1)

听起来你需要重新构建你的initializedb.py.无法从外部访问在另一个函数内定义的函数。最好在模块级别定义它们,并在主函数中简单地调用它们:然后你也可以导入它们并从其他任何地方调用它们。