【问题标题】:How fast is SQLite via PythonSQLite 通过 Python 有多快
【发布时间】:2011-11-06 04:46:24
【问题描述】:

我只是好奇是否有人能告诉我使用 SQLite 存储字典(如暴力破解)以在 Python 脚本中使用是否是一种有效的方法。虽然我对 Python 比较陌生,但我确实对其他编程语言有相当多的经验,目前正在开发一种用于 Backtrack 的渗透测试工具。到目前为止,Python 的速度和简单性给我留下了深刻的印象,而且我的 SQL 查询似乎工作得非常理想,可以为我的蛮力工具返回所需的前缀。但是,我想我想知道在 Python 中存储大数据文件的标准是什么?我是否仅仅因为我对 SQL 的熟悉而忽略了一种更好(更快)的存储前缀的方法?请记住,我没有使用 Python 来查询 ID 0 到 n 并使用它们,而是使用 Python 来缩小可能性并查询符合条件的字典条目。任何帮助或意见将不胜感激!

【问题讨论】:

  • 您希望它有多快?数据集 MB、GB、TB 有多大? “前缀”是什么意思,就像“前缀树”(trie)一样?您对数据执行的操作与关系模型的对应程度如何?

标签: python sqlite data-structures


【解决方案1】:

是的,sqlite 是实现字典的合理选择。为了速度,请使用 :memory: 选项并确保为您的查找和查询创建适当的索引。

对于大型持久性数据库,它也可以很好地工作。为了速度,请注意提交大型事务而不是每个键。

在他们的网站上介绍了 sqlite 作为数据存储的建议和适当用途:http://www.sqlite.org/features.html

【讨论】:

    【解决方案2】:

    如果 Raymond Hettinger 也推荐 SQLite,那么这可能是您最好的选择。

    但原生 Python 解决方案是使用“pickle”文件。您将构建一个保存数据的 Python dict,然后“腌制”该字典;稍后你可以“解开”字典。如果您只需要搜索一个键,那么这可能是一个不错的方法。

    对于 Python 2.x,您可能希望使用 cPickle 模块。对于 Python 3.x,只有 pickle,但我相信它和 cPickle 一样快。

    http://docs.python.org/library/pickle.html

    另一方面,如果您的数据集真的很大,以至于 SQLite 开始扼杀它,那么与其将其拆分为多个较小的 SQLite 文件并进行管理,不如将所有内容转储到一个真实的数据库,例如 PostgreSQL。

    【讨论】:

      【解决方案3】:

      半题外话,这里有一些有用的链接。

      THC-Hydra:P

      还有一个很棒的关于密码策略和使用密码策略的视频。

      http://www.irongeek.com/i.php?page=videos/hack3rcon2/martin-bos-your-password-policy-sucks

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-09-27
        • 1970-01-01
        • 2011-04-13
        • 1970-01-01
        • 2021-07-26
        • 1970-01-01
        • 2021-05-30
        • 2018-06-11
        相关资源
        最近更新 更多