使用* sql *数据库获取实验室书籍数据

时间:2015-08-31 13:59:26

标签: python sql database csv pandas

我目前正在跟踪我的湿工作(实验室工作),为每个实验类型的迭代创建一个.csv文件,然后在列中输入基质样本,结果样本和实验变量;例如这是文件pcr_0055.csv(这里" DNA样本"是进入的内容," ID"出来的内容)

ID,    "thermocycler protocol", "pcr mix", "DNA sample", primers,         comment
TP2pj0, TP2T6,                  TP2M2,      Tpbp2,       cre_fw5,
TP2pj1, TP2T6,                  TP2M2,      Tpbp2,       "cre_fw5, cre_fw3",
TP2pj2, TP2T6,                  TP2M2,      Tpbp2,       "cre_fw5, epcc_fw1",
TP2pj3, TP2T6,                  TP2M2,      Tpbp3,       cre_fw5,
TP2pj4, TP2T6,                  TP2M2,      Tpbp3,       "cre_fw5, cre_fw3",
TP2pj5, TP2T6,                  TP2M2,      Tpbp3,       "cre_fw5, epcc_fw1",
TP2pj6, TP2T6,                  TP2M2,      TP2ph8,      cre_fw5,
TP2pj7, TP2T6,                  TP2M2,      TP2ph8,      "cre_fw5, cre_fw3",
TP2pj8, TP2T6,                  TP2M2,      TP2ph8,      "cre_fw5, epcc_fw1",
TP2pj9, TP2T6,                  TP2M2,      TP2ph9,      cre_fw5,
TP2pj10,TP2T6,                  TP2M2,      TP2ph9,      "cre_fw5, cre_fw3",
TP2pj11,TP2T6,                  TP2M2,      TP2ph9,      "cre_fw5, epcc_fw1",

我正在使用grep浏览我的文件,并且性能可以接受。

我在考虑重新组织我的数据,以便每个物质ID都有自己的.csv,这样可以让我更好地跟踪留给我的音量,等等。更不用说文件名{ {1}}毫无意义。

然而,我也想知道,如果我真的可以通过迁移到数据库模型来获得更好的服务。我需要一个能够轻松适应大数据的基础设施,可以快速搜索,并为我提供了大量空列的可能性(如果我要列出我在一个样本上执行的每个程序,我将在每个程序中使用不同的变量)

我想知道的是:

  • 数据库是否适用于我的用例?如果不是真的,那么有什么保留?
  • 在选择SQL /数据库实现时,我应该注意MySQL,PostgreSQL,SQLite等之间有什么区别?
  • 这些(或其他)数据库解决方案中哪一个与Python和Pandas集成得很好(最好?)?

3 个答案:

答案 0 :(得分:3)

问题不在于什么数据库,而在于如何使用数据库。您使用了一个非常重要的词基础设施

在关系数据库管理系统中,基本上有两种结构类型:

  • 文件级数据库,包括MS Access等常用表单 和SQLite(开源);

  • 服务器级数据库,包括SQL Server,Oracle,MySQL (开源),PostgreSQL(开源)和DB2等等。

请放心,所有上述SQL引擎都可以与Python一起使用,就像使用PHP,R和SAS等统计软件包一样。在appropriate database uses上查看这篇优秀的SQLite教程。

如何选择最佳类型取决于 您希望如何管理您的实验室数据。如果您不是为企业解决方案设计(即数百个事务/用户/ GB),许多人会同意,像PostgreSQL这样的客户端服务器系统可能过度。需要考虑的几个问题:

  1. 您希望处理多少数据?实验室数据是否涉及许多相关表格(即,SubstanceID的许多分裂)?数据大小几百MB? GB? TB?文件服务器通常是较低的关键选择,但仍然很强大。
  2. 您是否有关系模型和设计架构来设置索引和其他最佳实践的数据库架构?
  3. 您是否准备安装和处理辅助组件(即ODBC驱动程序,并管理SQL Server Browser,MySQL Services,可能还有Apache等服务)?
  4. 您需要远程连接和访问吗?您是否准备好管理此类服务器级别的安全性?
  5. 您是否希望有多个用户连接并运行操作查询?
  6. 会有很多文件转换处理(csv,tsv,txt,xml,xlsx等)吗?例如,MS Access利用Office Suite,可以处理从CSV到Excel电子表格到XML的本机许多文件类型。
  7. 您是否拥有必要的RAM,硬盘等来扩展此类数据库解决方案?毫无疑问,上述所有内容都可以在笔记本电脑上运行,但服务器级RDMS可以在LAN和网络上实现最佳工作。
  8. 不可否认,我可能会过度思考你的过程,但要真正建立一个最佳的数据库解决方案,应该仔细决策。您不愿意将时间和资源投入到不适合您日常需求的基础架构中。祝你好运!

答案 1 :(得分:1)

  1. 数据库是完成这项工作的绝佳工具,您可以很好地定义数据层之间的结构化数据和关系。
  2. Gordon推荐PostgreSQL,因为它是免费的,并且易于使用语法将数据直接从CSV导入表格。
  3. MySQL,PostgreSQL都很好地与python集成,我认为你很难找到一个远程知名的DBMS平台,它不能与Python集成。 sails-must

答案 2 :(得分:0)

评论太长了。

您正在使用完整格式的CSV格式 - 支持字段中的逗号。根据我的经验,SQL Server不能很好地处理这种格式。我不认为Oracle也会这样做。在这些情况下,我将文件读入Excel并以制表符分隔格式保存。

另一方面,Postgres支持完整的CSV约定,包括转义字段。我不确定MySQL是否会这样做。