我无法从编写数据的python脚本访问peewee数据库(但奇怪的是在交互式shell中)。我正在使用python,flask和peewee开发数据挖掘应用程序。我将在这里将其切割成字节大小的问题,但它的范围比我提出的要大。所有python文件都位于同一个文件夹中
基本过程是一个python命令行操作,它会从纽约时代和Instagram中获取一些信息并将它们存储到Peewee(sqllite)数据库中。然后我使用烧瓶应用程序来探索数据。
来自database.py的其中一个模型:
from peewee import *
class Story(Model):
title = CharField()
story = TextField()
date = DateField()
class Meta:
database = SqliteDatabase("newsalmost.db",threadlocals = True)
newsalmost看起来像这样:
from database import *
class NewsAlmost(object):
def __init__(self):
self.db = SqliteDatabase("newsalmost.db",threadlocals = True)
如果是这样的话:
story = Story.create(title = self.feed.stories[key]["title"], story = self.feed.stories[key],date = datetime.datetime.now(), is_relative = True)
然后我可以跑:
"python newslamost.py -g"
它将收集东西并将它们写入数据库
然后我有一个名为webapp.py的文件,这是一个烧瓶应用程序
import newsalmost
from flask import Flask
from flask import send_file
import subprocess
app = Flask(__name__)
import os
import json
from database import *
@app.route("/")
def index():
r = []
for i in Image.select():
r.append(str(i))
return json.dumps(r)
“python webapp.py”
我试图将其剥离到核心问题。烧瓶应用程序永远不会在数据库中看到任何东西..永远..
我知道它正确记录它们,因为我实际上可以在该文件夹中运行“python”,导入数据库,我从Stories.select()获取了很多故事
WEIRDER的事情是,我最初以一种更理想的方式构建了这个,其中烧瓶应用程序仅创建一个新闻实例的新实例,然后调用其上的函数从数据库返回东西,这就有用了.IN DEV MODE 。但是,当我将它部署到我的网络派系服务器(并使所有内容都运行起来)时,我再次受到了来自数据库的空响应的欢迎。这是我尝试直接引用烧瓶中的数据库的尝试,认为这可能是最新闻的事情......但是没有。我很困惑为什么sqllite数据库在本地完全按照预期执行,但没有一次部署到网络服务器,但也...为什么我提供的烧瓶代码没有从数据库中获取任何东西,但运行相同交互式shell中的数据库查询工作?
任何想法?
答案 0 :(得分:1)
我不知道这是否可以解决您的问题,但您应该在两个模块中使用相同的数据库对象:
database.py
:
from peewee import *
db = SqliteDatabase("newsalmost.db",threadlocals = True)
class Story(Model):
title = CharField()
story = TextField()
date = DateField()
class Meta:
database = db
newsalmost.py
:
from database import *
class NewsAlmost(object):
def __init__(self):
self.db = db