[英]Read the data from the csv file while keeping a watch on the folder for changes
[英]How to update data in django table from csv file while keeping the primary key value as it is.?
我有一个已经包含一些数据的表。 现在,我想从csv文件上传新数据,并想更新该表的某些先前值。 我正在使用django 1.3和sqlite3作为数据库。 但是我无法更新表格。
如果您不想更改Primay键值或不想向表中添加新对象(可能与旧信息重复),则需要某种数据,可以将其用作数据库中的查找参数。
如果您有代表该数据的模型,那么使用起来真的很容易
m = Model.objects.get(somecolumn = somedata)
m.someothervalue = someotherdata
m.save()
但是为什么还要在其中包含django? 如果您有CSV表,则更新此信息实际上是编写查询的一种情况。 像Excel和openoffice这样的程序使此操作非常容易。 如果您已经有CSV格式的数据,则只需将数据作为电子表格打开,然后使用excels / openoffice的Concactenate函数创建更新查询
Update mytable set value1 = data1, value2 = data2 where somevalue = somedata;
如果您为此使用openoffice,则openoffice具有此漂亮的“文本到列”功能(在程序菜单中的数据下),该功能将固定的值转换为字符串。 然后,您可以将这些字符串复制粘贴到命令提示符或phppgadmin中,然后运行..和瞧,您将在数据库中获取更新的数据。
编辑(针对您的评论。):
看看这个: https : //docs.djangoproject.com/en/dev/ref/models/querysets/#get-or-create
如果要为此使用django,请使用get_or_create。 但是您需要在这里记住,如果您在get_or_create方法中使用的任何参数已更改,则将创建新对象。 这就是为什么我在帖子开头说过,您需要某种数据,这些数据不会改变。
例如(摘自上面的链接)
obj, created = Person.objects.get_or_create(first_name='John', last_name='Lennon',
defaults={'birthday': date(1940, 10, 9)})
首次使用时将创建新的obj(Person)。 但是如果第二次使用并且日期已更改,则将创建具有相同名称和姓氏但新日期的新人员。
因此,为避免这种情况,您仍然需要做类似的事情
obj.someothervalue = someotherdata
obj.save()
如果您想对数据有更多的控制权,则可以进行更改。
艾伦
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.