如果我想建立一个自定义数据库,我该怎么做? [关闭]
Posted
技术标签:
【中文标题】如果我想建立一个自定义数据库,我该怎么做? [关闭]【英文标题】:If I want to build a custom database, how could I? [closed] 【发布时间】:2011-04-28 18:21:33 【问题描述】:我构建了一个以前的程序,它获取客户信息并将其存储在 txt 文件的文件夹中(不切实际),但现在我想升级程序以提高效率并将信息放入某种数据库中......
如何从文本文件中获取信息并将它们添加到新数据库中,而无需手动执行每个操作。我知道这很模糊,但我需要更多方法/逻辑而不是确切的代码,另外,如果我不使用 SQL,那么另一种制作数据库的方法是什么(不使用另一个商业数据库)
顺便说一句,txt 文件的格式很简单(姓名、城市、年龄),都在单独的行上,以便于迭代
【问题讨论】:
有 JSON、XML、SQLite、简单的酸洗。你有什么想法? 很好,我正在学习 python 中的 sql,但是对于程序的这种软升级,我可以使用 pickling 或 shelve ......这更好,我尝试在 pickle 文件中做一个字典字典但是我可以找到一种方法来得到我需要的东西 您可能会感兴趣的问题What is the best data structure for storing a set of four (or more) values?(以及我的回答)。 【参考方案1】:标准库中免费且可移植的 Python shelve
模块可能就是您所需要的。它允许您创建和使用本质上是持久的字典,因此有一个非常渐进的学习曲线。将您的文本文件转换成一个文件应该相当容易,但不会自动进行——您可能需要编写一个简单的脚本来完成。
【讨论】:
虽然shelve
对恶意数据并不安全,但它非常适合作为学习如何从头开始构建数据库的积木。【参考方案2】:
好吧,您可以使用csv
module in Python 读取您的txt* 文件。
恐怕对于任何类型的数据库操作,SQL 知识都是必须的,除非您有ORM eg. Django's ORM 的舒适感。
*它们在 Windows 以外的任何设备上都不会这样称呼。
【讨论】:
即使使用 ORM,SQL 知识也是必须的。在做比简单记录更复杂的事情时,数据库规范化与面向对象编程有很大不同。 @Andre:OP 想要存储 just “name,city,age”。我想这可以称为“简单记录”。【参考方案3】:我会使用 os.listdir() 获取所有 *.txt 文件的列表,然后读取并解析所有文件,最后将所有信息放入某个“数据库”中。 Python 很少有这样的“数据库”类型的模块
csv 模块 (http://docs.python.org/library/csv.html) bsddb(这仅在 Python 2.x 中,https://docs.python.org/2/library/bsddb.html) sqlite3 模块 (http://docs.python.org/library/sqlite3.html)【讨论】:
【参考方案4】:除了上面的建议,看看Elixir,它是 SQLAlchemy 之上的一个抽象层,它使得构建数据库接口(以及插入/查询信息)变得相当简单。
【讨论】:
【参考方案5】:DB 拥有 SQL 的主要原因是使其与您正在开发的应用程序分开和通用。
要建立自己的数据库,您需要有一种存储机制,可以是硬盘上的文件,带有搜索选项,以便您可以使用您感兴趣的关键字立即访问数据。除此之外,您还必须拥有启动队列,读取它们并转换为较低文件读取和写入功能的层。你需要有这个队列层,因为假设你有 100 个应用程序并且都试图同时从同一个文件中读取和写入,你可以想象文件会发生什么。会有访问被拒绝,有人使用它,数据损坏等等等等。所以你需要把所有这些都放在队列中,让这个队列层为你翻译。
从将数据读/写/排序到文件和队列层的不同方式开始。从那里您可以构建应用程序。
这里的队列层类似于试图将数据推送到大多数可用数据库中的通信端口的客户端。
【讨论】:
以上是关于如果我想建立一个自定义数据库,我该怎么做? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
如何使用Swift在Xcode上创建自定义数字键盘? [关闭]