【发布时间】: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