我正在尝试制作简单的网页,它将从SQLite文件中读取数据并将其显示在网页中,这很简单,我想做3个SQL查询并显示结果。
我有使用Brython的想法,因为它看起来更容易制作Django/Flask应用程序,
这是我的代码:
<html>
<head>
<script src="/brython.js"></script>
</head>
<body onload="brython('debug_mode')"> <!-- for debug --!>
<script type="text/python">
from browser import document, alert
from browser import html
def echo(ev):
alert(document["zone"].value)
document['mybutton'].bind('click',echo)
document['text'] <= html.P("testing")
document['text'] <= html.P("testing 222")
# get holidays for today
import sqlite3
import sys
sqlite3_connection = sqlite3.connect('test.db')
with sqlite3_connection:
sqlite3_cursor = sqlite3_connection.cursor()
sqlite3_cursor.execute('SELECT SQLITE_VERSION()')
data = sqlite3_cursor.fetchone()
document['text'] <= html.P("SQLite version: %s" % data)
</script>
<input id="zone"><button id="mybutton">click !</button>
<div id="text">
</div>
</body>
</html>
这是行不通的,问题是 Brython 默认情况下没有 sqlite3 实现。
有没有一些简单的方法可以将sqlite3添加到Brython?
我已经看到有一些谷歌夏季代码项目,但没有在任何地方找到结果。
正如Martijn在评论中明确指出的那样 - 你试图做的事情比有一个最小的Python应用程序来提供你的数据要困难得多:Brython旨在作为客户端脚本语言 - 尽管它令人惊讶地接近Python并且每天都在变得更好,但它仍然是客户端。
您的数据上的数据,无论是 sqlite 还是任何其他数据,都位于服务器端 -因此,至少您必须设置一个 Web 服务来根据需要执行数据库查询。
即使你想要一个只使用浏览器作为UI的"本地"应用程序,cleint side brython也无法进入文件系统来读取数据库文件。(如果brython确实实现了sqlite3 Python模块,正如你所检查的,它没有)。
无论如何,在Brython中编码需要你实际使用Python代码程序来使用DOM实时更新页面,这通常比简单地在Flask或其他微框架中拥有静态视图更复杂,这将进行数据库查询并呈现模板。此外,Brython 没有标准(或者说也不是"非标准")框架,可以帮助模板化页面和做成熟框架的其他细节——即使你有完整的 Python3 字符串格式,模板中有逻辑分离和流控制你必须重新发明。
所以提示是:只需在某个地方选择一个不错的烧瓶/web2py/瓶子教程,然后开始。当你认为你有一个好的静态 Web 应用程序时,添加 Brython 以使其动态化。
经过更多的研究和给比利·厄尼发的电子邮件。比尔是布莱顿背后的人。
sqlite3 目前未在 Brython 中添加。
他的回应:
我们没有被GSOC 2014接受,因此SQLite3还没有被移植到Brython。 它仍然在我们的待办事项清单上。