多操作系统基于文本的数据库,带有Python和JavaScript引擎

多操作系统基于文本的数据库,带有Python和JavaScript引擎,javascript,python,database,json,wxpython,Javascript,Python,Database,Json,Wxpython,这可能是一个遥远的获取,但也许有人知道一个很好的解决方案 导言 我目前正在用Python开发一个新的wxPython 2.9应用程序,它有一个新的html2库,它将继承每个操作系统(Safari/IE/Firefox/Konquer/~)的本机浏览器,非常棒 目标/目的 我目前的目标是用Python超快速地处理大块数据并对其进行分析(目前大约有110.000个条目,在字典中大约有1500.000到250.000个结果)。它的工作速度非常快,而且是动态的,因此它只会执行一次第一次大抓取(仅需约2-

这可能是一个遥远的获取,但也许有人知道一个很好的解决方案

导言

我目前正在用Python开发一个新的wxPython 2.9应用程序,它有一个新的
html2
库,它将继承每个操作系统(Safari/IE/Firefox/Konquer/~)的本机浏览器,非常棒

目标/目的

我目前的目标是用Python超快速地处理大块数据并对其进行分析(目前大约有110.000个条目,在字典中大约有1500.000到250.000个结果)。它的工作速度非常快,而且是动态的,因此它只会执行一次第一次大抓取(仅需约2-4秒),然后在光盘上创建新数据时继续侦听

到目前为止,一切顺利。现在有了新的wxPython
html2
库,我正在制作新的GUI。它主要用于显示页面,所以我现在制作的是
/html/
文件夹中的一个模型(带有html/CSS/jQuery),它将动态查找JSON文件(jQuery抓取),这实际上是Python脚本在后台(守护进程)以并行线程生成的大量字典的完全转储

JavaScript在读取一个大的JSON文件时似乎没有问题,而且因为所有东西都是(并且保持)本地的,所以它实际上不会导致速度慢或任何问题。而且CPU和内存使用率非常低

结论

但瓶颈来了。从JavaScript的角度来看,处理大JSON文件并不是一件轻松的事。我必须对需要获取的所有数据进行大量搜索和匹配,并且在相同的大块条目中创建大量冗余的重新循环

问题

我想知道是否有任何一种“引擎”是为Python和JavaScript实现的,可以处理jSON文件,或者作为数据库处理其他基于文本的文件。这意味着您可以真正拥有一个类似MySQL的结构(当然不是指完全扩展),您至少可以定义一个表结构来保存数据,并且系统地进行读/写/更新

我目前正在开发的应用程序是基于多操作系统的(至少是Ubuntu、OSX和WindowsXP+)。我还真的不想比使用wxPython(用于分发/依赖)来使用扩展数据库(就像我可以在localhost上运行MySQL服务器)造成更多的混乱,所以只需将它保存在Python发行版的文件夹中。这也是为了防止编写大量代码(检查)检查用户是否已经使用服务器/数据库,这可能会与我将要安装的应用程序发生冲突


最终注释

'use strict';
$(document).ready(function() {
    // JSON data read test
    var query = 'SELECT * FROM test';

    $.ajax({
        url: 'http://127.0.0.1:61350/cgi/index.py?query=' + query,
        success: function(data) {
            lg(data);
        },
        error: function() {
            lg('Something went wrong while fetching the query.');
        }
    });
});

我的目标是自己为将来的项目构建某种API,使这种开发方式成为需要GUI的Python脚本的标准。现在wxPython可以更容易地接受现代浏览器技术;构建超快速、动态和响应迅速的图形化Python应用程序似乎不再受限制。

为什么不将数据粘贴到SQLite数据库中,然后让Python和Javascript都达到这个目的呢?另见


Sqlite包含在所有现代版本的Python中。您必须查看SQLite网站,了解它的局限性

为什么不将数据粘贴到SQLite数据库中,然后让Python和Javascript都达到这个目的呢?另见


Sqlite包含在所有现代版本的Python中。您必须查看SQLite网站,了解其局限性

通过运行CGI HTTP服务器并让Python在其中获取SQLite查询以进行JavaScript的AJAX调用,您可以找到一些解决方案。下面是一个小演示(仅在OS X上测试):

文件夹结构

Python服务器(main.py)

Python SQLite处理器(cgi/index.py)(演示纯粹用于选择,需要更多动态)

JavaScript(html/scripts/main.js)

就这样结束了。浏览器中的控制台输出为

[
    [1, "something1", "something1_name"],
    [2, "something2", "something2_name"]
]
使用这种方法,您可以让Python和JavaScript在同一个数据库中读/写,同时Python继续执行其系统任务(守护进程)并更新数据库条目,而JavaScript可以继续检查新数据

这种方法也可能为听众和双方之间的其他交流方式增加空间


由于守护进程的原因,
main.py
将立即停止运行。这是因为我的wxPython脚本在它之后保持了守护进程(服务器)的活动状态,直到应用程序停止。如果其他人希望将来使用此代码;只需确保服务器代码在SQLite启动后运行,并取消引用
httpd.serve_forever()
,以保持其运行。

通过运行CGI HTTP服务器并让Python在其中获取JavaScript AJAX调用的SQLite查询,某种程度上解决了问题。下面是一个小演示(仅在OS X上测试):

文件夹结构

Python服务器(main.py)

Python SQLite处理器(cgi/index.py)(演示纯粹用于选择,需要更多动态)

JavaScript(html/scripts/main.js)

就这样结束了。浏览器中的控制台输出为

[
    [1, "something1", "something1_name"],
    [2, "something2", "something2_name"]
]
使用这种方法,您可以让Python和JavaScript在同一个数据库中读/写,同时Python继续执行其系统任务(守护进程)并更新数据库条目,而JavaScript可以继续检查新数据

这种方法也可能为听众和双方之间的其他交流方式增加空间

由于守护进程的原因,
main.py
将立即停止运行。这是因为我的wxPython脚本在它之后保持了守护进程(服务器)的活动状态,直到应用程序停止。如果其他人想将此代码用于fut
'use strict';
$(document).ready(function() {
    // JSON data read test
    var query = 'SELECT * FROM test';

    $.ajax({
        url: 'http://127.0.0.1:61350/cgi/index.py?query=' + query,
        success: function(data) {
            lg(data);
        },
        error: function() {
            lg('Something went wrong while fetching the query.');
        }
    });
});
[
    [1, "something1", "something1_name"],
    [2, "something2", "something2_name"]
]