当前位置:  开发笔记 > 编程语言 > 正文

使用Python从.txt文件填充SQLite3数据库

如何解决《使用Python从.txt文件填充SQLite3数据库》经验,为你挑选了1个好方法。

我正在尝试在django中设置一个网站,该网站允许用户向包含有关其在欧洲议会中的代表的信息的数据库发送查询.我将数据放在逗号分隔的.txt文件中,格式如下:

议会,名称,国家,Party_Group,National_Party,职位

7,Marta Andreasen,英国,欧洲自由民主集团,英国独立党,成员

等等....

我想用这些数据填充一个SQLite3数据库,但到目前为止我发现的所有教程都只显示了如何手动执行此操作.由于我在文件中有736个观察结果,所以我真的不想这样做.

我怀疑这是一件简单的事情,但如果有人能告诉我如何做到这一点,我将非常感激.

托马斯



1> Aram Dulyan..:

所以假设你models.py看起来像这样:

class Representative(models.Model):
    parliament = models.CharField(max_length=128)
    name = models.CharField(max_length=128)
    country = models.CharField(max_length=128)
    party_group = models.CharField(max_length=128)
    national_party = models.CharField(max_length=128)
    position = models.CharField(max_length=128)

然后python manage.py shell,您可以运行并执行以下命令:

import csv
from your_app.models import Representative
# If you're using different field names, change this list accordingly.
# The order must also match the column order in the CSV file.
fields = ['parliament', 'name', 'country', 'party_group', 'national_party', 'position']
for row in csv.reader(open('your_file.csv')):
    Representative.objects.create(**dict(zip(fields, row)))

而且你已经完成了.

附录(编辑)

根据托马斯的要求,这里有一个解释**dict(zip(fields,row)):

因此,最初,fields包含我们定义的字段名称列表,并row包含表示CSV文件中当前行的值列表.

fields = ['parliament', 'name', 'country', ...]
row = ['7', 'Marta Andreasen', 'United Kingdom', ...]

什么zip()做的是它结合了两个列表成为对两份名单(如拉链)项目的一个列表; 即zip(['a','b,'c'], ['A','B','C'])会返回[('a','A'), ('b','B'), ('c','C')].所以在我们的案例中:

>>> zip(fields, row)
[('parliament', '7'), ('name', 'Marta Andreasen'), ('country', 'United Kingdom'), ...]

dict()函数只是将对列表转换为字典.

>>> dict(zip(fields, row))
{'parliament': '7', 'name': 'Marta Andreasen', 'country': 'United Kingdom', ...}

**是一种将字典转换为函数的关键字参数列表的方法.所以function(**{'key': 'value'})相当于function(key='value').因此,在示例中,调用create(**dict(zip(field, row)))相当于:

create(parliament='7', name='Marta Andreasen', country='United Kingdom', ...)

希望这可以解决问题.


如果您将其加载到Django中,请务必查看Aram的解决方案以供使用.它正在利用django ORM位,所以你不需要直接搞乱架构.如果您对SQL架构感到满意,那么这并不是什么大问题,但我发现它让事情变得更容易.
推荐阅读
重庆制造漫画社
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有