Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在MySQL数据库中存储动态python字典?_Python_Mysql_Dictionary_Scrapy - Fatal编程技术网

如何在MySQL数据库中存储动态python字典?

如何在MySQL数据库中存储动态python字典?,python,mysql,dictionary,scrapy,Python,Mysql,Dictionary,Scrapy,我正在做一个关于网络爬虫+搜索引擎的小项目。我已经知道如何使用Scrapy框架刮取数据。现在我想做索引。为此,我发现Python字典是我最好的选择。我希望映射像对象的名称/标题(字符串)->对象本身(Python对象) 现在的问题是,我不知道如何在MySQL数据库中存储动态dict,我肯定要按原样存储这个dict 一些关于如何去做的命令将非常感谢 正如其他人已经指出的,在这种情况下,NoSQL解决方案会更自然。既然我们谈论的是无模式字典,那么像MongoDB这样的JSON文档数据库就非常适合了

我正在做一个关于网络爬虫+搜索引擎的小项目。我已经知道如何使用Scrapy框架刮取数据。现在我想做索引。为此,我发现Python字典是我最好的选择。我希望映射像对象的名称/标题(字符串)->对象本身(Python对象)

现在的问题是,我不知道如何在MySQL数据库中存储动态dict,我肯定要按原样存储这个dict


一些关于如何去做的命令将非常感谢

正如其他人已经指出的,在这种情况下,NoSQL解决方案会更自然。既然我们谈论的是无模式字典,那么像MongoDB这样的JSON文档数据库就非常适合了


有一个包提供到MongoDB数据库的管道。

如果您想在数据库中存储动态数据,这里有几个选项。这真的取决于你需要什么

首先,您可以使用NoSQL解决方案,比如MongoDB。NoSQL允许您在没有显式数据模式的情况下将非结构化数据存储在数据库中。这是一个相当大的话题,有比我能提供给你的更好的指南/信息。不过,NoSQL可能不适合项目的其余部分

第二,如果可能,您可以切换到PostgreSQL,并使用它的HSTORE列(在MySQL中不可用)。HSTORE列用于存储一组键/值对。此列类型支持BTREE、GIST、GIN和HASH索引。您需要确保熟悉PostgreSQL,以及它与MySQL的区别。其他一些SQL可能不再像您预期的那样工作

第三,可以序列化数据,然后存储序列化的实体。我想到了
json
pickle
。当然,它的可行性和可靠性将取决于你的词典有多复杂。序列化数据,特别是使用
pickle
可能会很危险,因此请确保您从安全角度熟悉它的工作原理

第四,使用“实体属性值”表。这模仿了字典中的“键/值”配对。实际上,您创建了一个包含三列“Related\u Object\u ID”、“Attribute”、“Value”的新表。您会丢失很多通常在表中获得的对象元数据,SQL查询可能会变得更加复杂


这些选择中的任何一个都可能是一把双刃剑。确保您已经阅读了任何您想使用的选项的缺点,或者在进一步研究这些选项时,您可能会找到更适合您和您的项目的选项。

NoSQL数据库如何?pyMongo是一种简单的方法this@LawrenceBenson:你能简单解释一下吗?@hd1:我不知道。如果你能多说一些,那会更有帮助。谢谢你们的回答!真的很感激!