【问题标题】:medium - large portable database options for python program用于 python 程序的中大型便携式数据库选项
【发布时间】:2012-10-29 02:50:52
【问题描述】:

我正在创建一个简单的 python 程序,它需要搜索一个有点大的数据库(约 40 个表,总共 600 万行左右)。

目前,我使用 MySQLdb 来查询我的本地 MySQL 数据库,然后我有一些其他 python 函数可以处理数据并返回一些统计信息和其他内容。我想与其他不想构建自己的数据库的人分享。此时,数据库仅用于查询。

我怎样才能最好地将数据库和 python 程序作为“包”共享。我是否必须放弃 SQL 方法并切换到某种文本文件数据库,或者有更简单的方法......也许是 sqlite?

如果答案是 sqlite,我该如何将我当前的 SQL 数据库导出到 sqlite 数据库?有什么我应该知道的问题吗?

目前,我使用带有几个 WHERE 语句的简单 SELECT 采石场来定位我需要的数据。恐怕如果我切换到基于文本的数据库,我最终将不得不编写大量代码来进行这些查询。

提前感谢您的任何建议。

编辑

所以我用 sqlite3 数据库编写了我的小 Python 程序,它运行良好。

我最终使用了一个名为 mysql2sqlite.sh 的 shell 脚本找到了 here 来将我的 MySQL 数据库转换为 sqlite。它完美无缺。

我只需要更改 2 行 python 代码。惊人的。

我的小程序可以在 osx、windows 和 linux(ubuntu 和 redhat)中运行,无需任何更改或麻烦。感谢您的建议!

【问题讨论】:

  • 所以主要卖点是软件和数据的捆绑?如果是这样,我建议使用 SQLite3。它包含在标准 Python 发行版中,并且通过简单的 SQL 语句,您甚至不必更改现有的 SQL 查询。
  • 是的,我想要捆绑软件和数据!如果我不需要大量更改我的 sql 代码,SQLite3 听起来是个不错的选择。您对创建/导出可共享的 SQLite3 数据库有什么建议吗?
  • 我会使用 SQLAlchemy 作为数据库抽象层,然后针对多个数据库后端(包括用于嵌入式案例的 SQLite)是微不足道的。
  • SQLAlchemy 是一个很棒的 ORM,但有时少即是多。从一开始我不认为 OP 确实知道/确实使用 SQLAlchemy,如果一个简单的 s&r 或正则表达式足以从 mysql 移植到 sqlite,为什么还要添加额外的抽象层?
  • 如何共享数据库?数据有多静态?托管数据库会更好地服务吗?

标签: python mysql database mysql-python


【解决方案1】:

转换您的数据库可以像 sql-dump 然后导入一样简单,具体取决于您的数据库的复杂性。请参阅此post 了解策略和替代方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多