在Web应用程序中连接到SQLite数据库

时间:2015-05-07 06:42:07

标签: python google-app-engine sqlite

我正在尝试连接到我创建的数据库对象,以便在Web应用程序中使用。

该应用程序的python代码如下:

import os
import jinja2
import webapp2
import sqlite3
#from google.appengine.ext import db

template_dir = os.path.join(os.path.dirname(__file__), 'templates')
jinja_env = jinja2.Environment(loader = jinja2.FileSystemLoader(template_dir), autoescape = True)

class Handler(webapp2.RequestHandler):
    def write(self, *a, **kw):
        self.response.out.write(*a,**kw)

    def render_str(self, template, **params):
        t = jinja_env.get_template(template)
        return t.render(params)

    def render(self, template, **kw):
        self.write(self.render_str(template, **kw))

#class bars_data():
#    def createdb(self):
        #barsdb = sqlite3.connect('bardatabase.db')
        #barsdb.execute("DROP TABLE if exists bars")
        #barsdb.execute("create table bars(name text, address text, state int)")
        #barsdb.execute('Insert into bars (name, address, state) VALUES(?,?,?)',("Hoolies", '24 Glebe Rd', 10))
        #barsdb.execute('Insert into bars (name, address, state) VALUES(?,?,?)',("Bar1", '25 Main St', 10))
        #barsdb.execute('Insert into bars (name, address, state) VALUES(?,?,?)',('Cafe Doug', '35 Summer St.', 5))
        #barsdb.execute('Insert into bars (name, address, state) VALUES(?,?,?)',("McMurphy", '25 F Street', 20))
        #barsdb.commit()       

class MainPage(Handler):
    def get(self):
        barsdb = sqlite3.connect('bardatabase.db')
        query = barsdb.cursor()
        bars_list = barsdb.execute("SELECT name FROM barsdb")

        self.render("index.html")

app = webapp2.WSGIApplication([
    ('/', MainPage)
], debug=True)

我使用“class bars_data()”中的代码来创建数据库文件,该文件与其他源代码文件位于同一目录中,但由于我没有使用应用程序运行它,因此我对其进行了评论。我不确定在运行应用程序时是否需要重新创建数据库/表,如果是这样的话,请将其包含在内。我想从数据库访问条形码名称并使用jinja将其写入页面。

我正在使用Google App Engine来运行它。我知道我可以使用数据存储,但这似乎是创建静态数据库的一种更简单的方法。

当我尝试运行应用程序时,不会呈现任何内容。但是当我删除代码tyring以建立数据库连接时,我的“index.html”模板将再次在浏览器中呈现。我做错了什么?

1 个答案:

答案 0 :(得分:0)

如果您将数据库文件作为应用程序文件的一部分提供,则应该可以使用。只需确保文件路径正确,如this answer中所述。不要假设应用程序的工作目录和数据目录是相同的。