连接到web app中的SQLite数据库

2024-09-29 20:29:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试连接到我为在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将其写入页面。在

我正在使用谷歌应用引擎来运行它。我知道我可以使用数据存储,但这似乎是创建静态数据库的更简单的方法。在

当我什么也不会渲染时,我会尝试运行应用程序。但是当我删除代码轮胎使数据库连接成为我的“索引.html“模板将再次在浏览器中呈现。我做错什么了?在


Tags: nameimportself数据库应用程序executeaddressdef
1条回答
网友
1楼 · 发布于 2024-09-29 20:29:29

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

相关问题 更多 >

    热门问题