Brython with sqlite3



我正在尝试制作简单的网页,它将从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。 它仍然在我们的待办事项清单上。

最新更新