【问题标题】:Brython with sqlite3带有 sqlite3 的 Brython
【发布时间】:2015-05-17 14:18:51
【问题描述】:

我正在尝试制作一个简单的网页,它将从 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 中?

我已经看到有一些Google summer of Code 项目针对它,但在任何地方都没有找到结果。

【问题讨论】:

  • 由于 Brython 在浏览器中运行,您应该查看 local storage
  • 我不会被 Flask 吓倒。查看这个使用 Flask 和 sqlite3 实现简单应用程序的示例:github.com/mikedll/flasksqlitedemo
  • 我会说 Brython 会更难,因为您现在无法在同一用户的不同浏览器之间共享该数据。 Flask 和 Django 仍然只是 Python,而 Brython 是一种使用 Python 语法的专用语言。因此,一大堆与网络相关的 Python 教程将无法在 Brython 上运行
  • @MartijnPieters 我只需要读取 SQLite 文件,每个用户都需要相同的文件。
  • @chishaku 我想我会选择 Flash。我最初的想法是使用 Flask,但后来我记得 Brython,2 小时后又回到了 Flask。我从未部署过 Flask,这就是我喜欢 Brython 的原因。

标签: python sqlite brython


【解决方案1】:

正如 Martijn 在他的 cmets 中明确指出的那样 - 您尝试做的事情比使用最小的 Python 应用程序来提供数据要困难得多: Brython 旨在作为一种客户端脚本语言 - 尽管它与 Python 惊人地接近并且一天比一天好,但它仍然是客户端。

您的数据库中的数据,无论是 sqlite 还是其他,都位于服务器端 - 所以至少你必须设置一个网络服务来根据需要执行数据库查询。

即使您想要一个“本地”应用程序只使用浏览器作为 UI,客户端 brython 也无法访问文件系统来读取数据库文件。 (如果 brython 确实实现了 sqlite3 Python 模块,正如您检查的那样,它没有)。

无论如何,在 Brython 中编码将需要您实际拥有 Python 代码程序来使用 DOM 实时更新页面,这通常比在 Flask 或其他微框架中简单地拥有一个静态视图更复杂,这将使数据库查询和渲染模板。 此外,Brython 没有标准(或目前也没有“非标准”)框架来帮助模板化页面和做成熟框架所拥有的其他细节——即使你有完整的 Python3 字符串格式,也有逻辑分离和流控制您必须重新发明的模板。

所以提示是:只需在某个地方选择一个不错的 flask/web2py/bottle 教程,然后开始吧。当你认为你有一个好的静态 Web 应用程序时,添加 Brython 以使其动态化。

【讨论】:

    【解决方案2】:

    经过更多研究并给 Billy Earney 发送电子邮件。比尔是 Brython 背后的人。

    Brython 中目前未添加 sqlite3。

    他的回应:

    我们没有被 GSOC 2014 接受,因此 SQLite3 尚未移植到 Brython。它仍在我们的待办事项清单上。

    【讨论】:

      猜你喜欢
      • 2011-04-24
      • 2017-06-25
      • 2017-03-11
      • 2021-09-26
      • 2019-03-10
      • 2016-03-16
      • 1970-01-01
      • 2018-03-05
      • 1970-01-01
      相关资源
      最近更新 更多