天道酬勤,学无止境

Good ways to import data into Django

I would like to import data into a Django project regularly. I need to tell the provider of my data what formats I want to received the data in. Should I ask for it in Json, XML, CSV ?

How does one usually deal with this in Django?

标签

评论

Django has a whole framework for importing data called Fixtures. You can read about the available formats (JSON is definitely there) here: https://docs.djangoproject.com/en/dev/howto/initial-data/

There are also examples of what the data should look like. Such as:

[
  {
    "model": "myapp.person",
    "pk": 1,
    "fields": {
      "first_name": "John",
      "last_name": "Lennon"
    }
  },
  {
    "model": "myapp.person",
    "pk": 2,
    "fields": {
      "first_name": "Paul",
      "last_name": "McCartney"
    }
  }
]

If you saved that as beatles.json, you could import it by running python manage.py loaddata /path/to/beatles.json

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • 如何在Django模型上存储字典?(How to store a dictionary on a Django Model?)
    问题 我需要在Django模型中存储一些数据。 这些数据并不等于模型的所有实例。 最初,我考虑过对模型进行子类化,但是我试图保持应用程序的灵活性。 如果使用子类,则每次需要新的对象时都需要创建一个整个类,这是不好的。 我还将最终得到很多子类,仅用于存储一对额外的字段。 我真的觉得词典是最好的方法,但是Django文档中没有关于在Django模型中存储词典的内容(或者我找不到它)。 有什么线索吗? 回答1 如果您要查找的是像任意数据一样的字典,则可以使用两级设置,其中一个模型是容器,另一个模型是键-值对。 您将创建容器的实例,创建每个键值实例,然后将一组键值实例与容器实例相关联。 就像是: class Dicty(models.Model): name = models.CharField(max_length=50) class KeyVal(models.Model): container = models.ForeignKey(Dicty, db_index=True) key = models.CharField(max_length=240, db_index=True) value = models.CharField(max_length=240, db_index=True) 它虽然不漂亮,但是可以让您使用数据库访问/搜索字典的内部,而不能使用pickle /
  • 如何将独立的散景图嵌入到Django模板中(how to embed standalone bokeh graphs into django templates)
    问题 我想通过django框架在我的Web应用程序中显示bokeh库提供的图形,但是我不想使用bokeh-server可执行文件,因为这不是好方法。 那有可能吗? 如果是,该怎么做? 回答1 使用Fabio Pliger建议的Embedding Bokeh Plots文档示例,可以在Django中做到这一点: 在views.py文件中,我们输入: from django.shortcuts import render from bokeh.plotting import figure from bokeh.resources import CDN from bokeh.embed import components def simple_chart(request): plot = figure() plot.circle([1,2], [3,4]) script, div = components(plot, CDN) return render(request, "simple_chart.html", {"the_script": script, "the_div": div}) 在urls.py文件中,我们可以放置: from myapp.views import simple_chart ... ... ... url(r'^simple_chart/$', simple
  • Django:CSV模型导入[重复](Django: CSV model import [duplicate])
    问题 这个问题已经在这里有了答案: 如何将CSV数据导入Django模型(14个答案) 6年前关闭。 我需要一种将cvs数据导入数据库的方法。 csv在字段方面与我的模型之一匹配。 在Django中,是否有推荐的方法/软件包来执行类似的操作? 我看过在这里找到的django-csvimport(http://pypi.python.org/pypi/django-csvimport/0.9),但是对于像我这样的初学者来说,没有使用它的教程。 其他人都有很好的文档吗? 回答1 如果很简单,请按照以下示例读取CSV行: http://docs.python.org/2/library/csv.html 并在每个循环上构建模型并保存。 这是做您想做的事的最快,最简单的方法。 大约10行,没有使用任何花哨的库。 无需考虑过多。 回答2 您可以查看django-adaptors并使用CsvDBModel。 该文档在这里给出了一些提示
  • Django: CSV model import [duplicate]
    This question already has answers here: how to import csv data into django models (14 answers) Closed 6 years ago. I need a way to import a cvs of data into my database. the csv matches one of my models in terms of fields. in Django are there any recommend ways/packages for doing something like this? I have looked at django-csvimport found here (http://pypi.python.org/pypi/django-csvimport/0.9) however, for a beginner like me there are no tutorials on using it. anyothers with good documentation?
  • 自定义Django 404错误(Custom Django 404 error)
    问题 我有一个404.html页面,但是在某些情况下,我希望能够发送json错误消息(针对404和500等)。 我阅读了以下页面: https://docs.djangoproject.com/en/dev/topics/http/views/#the-404-page-not-found-view 是否有某种示例可以显示实现? 我将其保存在urls.py中,但是在发生错误时不会被拾取。 回答1 这为我工作: from django.conf.urls import patterns, include, url from django.views.static import * from django.conf import settings from django.conf.urls.defaults import handler404, handler500 from app.views import error urlpatterns = patterns('', # Examples: # url(r'^$', 'app.views.home', name='home'), ) handler404 = error.error_handler handler500 = error.error_handler 转到该控制器时,您可以根据需要使其执行任何操作。 回答2
  • Django:模型中的列表字段?(Django: List field in model?)
    问题 在我的模型中,我想要一个包含三联列表的字段。 例如[[1, 3, 4], [4, 2, 6], [8, 12, 3], [3, 3, 9]] 。 是否存在可以将这些数据存储在数据库中的字段? 回答1 您可以使用JSON将其转换为字符串并将其存储为字符串。 例如, In [3]: json.dumps([[1, 3, 4], [4, 2, 6], [8, 12, 3], [3, 3, 9]]) Out[3]: '[[1, 3, 4], [4, 2, 6], [8, 12, 3], [3, 3, 9]]' 您可以将方法添加到类中以自动为您转换。 import json class Foobar(models.Model): foo = models.CharField(max_length=200) def set_foo(self, x): self.foo = json.dumps(x) def get_foo(self): return json.loads(self.foo) 如果您使用的是Django 1.9和postgresql,则有一个名为JSONField的新类,您应该改用它。 这是它的链接 在youtube上有关于PostgreSQL JSON和数组的好话。 观看它,它具有非常好的信息。 回答2 如果您使用的是Django 1.10或更高版本的AND
  • 用 Python、nginx 搭建在线家庭影院
    我喜欢看电影,尤其是好的电影,我会看上三四遍,仔细感受电影带给我的另一种人生体验,不同时期,不同年龄段看相同的电影,体验也会不一样。比如你上学时期看周星驰的电影可能就仅看到了笑点,工作之年之后再看,也许你会觉得这蕴含着深刻的人生哲理。以前下载的电影,放的到处都是,手机上,U 盘里,平板,台式机,笔记本上都保存有下载过的电影,而且有时候平板或手机空间不够,就不得不删除珍藏已久的电影,很是可惜。当要看电影时,一时却找不到自己曾下载过的电影,于是又在网上搜索,但是随着版权越来越被重视,看视频都要会员,或者付费观看(这一点是进步的,只有这样才会有更好的作品呈现。),没有会员就要忍受非常烦人的广告,而且未必是高清资源。想想曾经下载过的电影删除了,现在看可能要收费了,很是遗憾。如果电影可以统一放在廉价的台式机硬盘上,再开启一个视频流服务器能让所有的联网设备直接在线播放就好了,这样就不用担心下载过的电影无法找到了,而且觉得好的电影可以随时推荐给家人和朋友观看。我知道 Python 是可以干这个事情的,说干就干,当天晚上就做好了一个 demo。【如果你也有个想法想实现,那么请即刻行动起来,如果超过 72 个小时还没行动,你很可能再也不会去做了】技术栈:python、django、nginx感兴趣的和我一起动手做吧。以 windows 操作系统为例,其他系统可做参考。1、下载并配置
  • Django - Mac OSX 工作流程 - 关于高效开发方法的问题(Django - Mac OSX Workflow - Questions on efficient development methodologies)
    问题 我将概述我的工作流程,我想就如何提高工作效率提出一些建议。 现在看起来有点麻烦和重复(我讨厌的东西),所以我正在寻找一些改进。 请记住,我对 django 及其工作方式仍然不熟悉,但我是一个非常流利的编码员(恕我直言)。 所以这里... 工具(我每天都使用这些,所以我不倾向于换班) : Mac OSX Leopard 文字伴侣带标签的终端强制执行 假设 Django 基础知识(做了教程/买了书) Python Fluent(运行 2.6,支持 IDLE) 开始我的第一个应用程序在 models.py 上工作 出发 创建一个包含整个 django 树的 TextMate 项目。 TextMate 项目 http://img.skitch.com/20090821-g48cpt38pyfwk4u95mf4gk1m7d.jpg 在终端的第一个选项卡中启动服务器python ./manage.py runserver 在终端窗口的第二个选项卡中启动 shell python ./manage.py shell 这产生了 iPython,让我开始开发工作流程 工作流程 创建并构建一个名为 models.py 的基本模型构建基本模型 class P4Change(models.Model): """This simply expands out 'p4 describe' """
  • How to avoid import-time database access in Django?
    My Django app has a number of categories for things which I store in a Category model. I reference these frequently in code, and so I've found it useful to have a module with references ("constants") to these categories and groups of them, so typos will fail fast. This also provides the benefit of caching. And finally, it's the actual model so it has all the related functionality. It looks something like this: def load_category(name): return Category.objects.get(name=name) DOGS = load_category("dogs") CATS = load_category("cats") However, this results in import-time database access and causes
  • 您如何将PIL`Image`转换为Django`File`?(How do you convert a PIL `Image` to a Django `File`?)
    问题 我试图将UploadedFile转换为PIL Image对象以对其进行缩略图处理,然后将我的缩略图函数返回的PIL Image对象转换回File对象。 我怎样才能做到这一点? 回答1 无需写回文件系统,然后通过打开调用将文件重新带回内存的方法是利用StringIO和Django InMemoryUploadedFile。 以下是有关如何执行此操作的快速示例。 假设您已经有一个名为“ thumb”的缩略图: import StringIO from django.core.files.uploadedfile import InMemoryUploadedFile # Create a file-like object to write thumb data (thumb data previously created # using PIL, and stored in variable 'thumb') thumb_io = StringIO.StringIO() thumb.save(thumb_io, format='JPEG') # Create a new Django file-like object to be used in models as ImageField using # InMemoryUploadedFile. If you look at
  • Django:将模型对象的整个集合转换为单个字典(Django: Converting an entire set of a Model's objects into a single dictionary)
    问题 如果您是从Google来这里寻找模型的人,请跳过我的问题,然后跳到第一个答案。 我的问题只会使您感到困惑。 在Django中,有没有一种好的方法可以将整个模型对象集合到一个字典中? 我的意思是,像这样: class DictModel(models.Model): key = models.CharField(20) value = models.CharField(200) DictModel.objects.all().to_dict() ...结果是字典,键/值对由模型中的记录组成? 还有其他人认为这对他们有用吗? 谢谢。 更新我只是想补充一点,我的最终目标是能够在模板内进行简单的变量查找。 就像是: {{ DictModel.exampleKey }} 结果为DictModel.objects.get(key__exact = exampleKey).value 总体而言,你们对您的所有回复都非常有帮助,并且处理方式也有不同,确实让我感到惊讶。 非常感谢。 2011年10月更新:如果您使用Google“ django model_to_dict”,那么此问题是最高的结果,考虑到它解决的问题与我所要提出的问题不同,实际上这是非常糟糕的。 我想要的是能够将查询集中的所有实例映射到具有指定模型字段作为键的单个字典中。 另一方面,model_to
  • 在Django中缓存站点地图(Caching sitemaps in Django)
    问题 我使用Django的默认站点地图应用程序实现了一个简单的站点地图类。 由于执行时间很长,因此我添加了手动缓存: class ShortReviewsSitemap(Sitemap): changefreq = "hourly" priority = 0.7 def items(self): # Try to retrieve from cache result = get_cache(CACHE_SITEMAP_SHORT_REVIEWS, "sitemap_short_reviews") if result!=None: return result result = ShortReview.objects.all().order_by("-created_at") # Store in cache set_cache(CACHE_SITEMAP_SHORT_REVIEWS, "sitemap_short_reviews", result) return result def lastmod(self, obj): return obj.updated_at 问题在于Memcached最多只允许一个1 MB的对象。 这个大于1 MB,因此将其存储到缓存失败: >7 SERVER_ERROR object too large for cache
  • 如何将Django OAuth Toolkit与Python Social Auth结合使用?(How can I use Django OAuth Toolkit with Python Social Auth?)
    问题 我正在使用Django Rest Framework构建API。 后来,该API应该由iOS和Android设备使用。 我想允许我的用户使用Facebook和Google之类的oauth2提供程序进行注册。 在这种情况下,他们完全不必在我的平台上创建帐户。 但是,当我没有django-oauth-toolkit的Facebook / Google帐户时,用户也应该能够注册,所以我有自己的oauth2-provider。 对于外部提供程序,我使用的是python-social-auth,它可以正常工作并自动创建用户对象。 我希望客户端通过使用承载令牌进行身份验证,这对于与我的提供程序注册的用户来说效果很好(django-oauth-toolkit为Django REST框架提供了身份验证方案和权限类)。 但是,python-social-auth仅实现基于会话的身份验证,因此没有直接的方法可以代表由外部oauth2提供程序注册的用户发出经过身份验证的API请求。 如果我使用django-oauth-toolkit生成的access_token,则执行如下请求: curl -v -H "Authorization: Bearer <token_generated_by_django-oauth-toolkit>" http://localhost:8000/api/ 但是
  • 使用Django 1.7加载初始数据和数据迁移(Loading initial data with Django 1.7 and data migrations)
    问题 我最近从Django 1.6切换到1.7,并且开始使用迁移功能(我从未使用过South)。 在1.7之前,我曾经使用fixture/initial_data.json文件加载初始数据,该文件是通过python manage.py syncdb命令加载的(在创建数据库时)。 现在,我开始使用迁移,并且不赞成使用此行为: 如果应用程序使用迁移,则不会自动加载固定装置。 由于Django 2.0中的应用程序需要迁移,因此该行为被视为已弃用。 如果要加载应用程序的初始数据,请考虑在数据迁移中进行。 (https://docs.djangoproject.com/zh/1.7/howto/initial-data/#automatically-loading-initial-data-fixtures) 官方文档中没有关于如何执行此操作的明确示例,因此我的问题是: 使用数据迁移导入此类初始数据的最佳方法是什么: 使用对mymodel.create(...)多次调用编写Python代码使用或编写Django函数(如调用loaddata)从JSON夹具文件中加载数据。 我更喜欢第二种选择。 我不想使用South,因为Django现在似乎可以本地使用。 回答1 更新:有关此解决方案可能导致的问题,请参见下面的@GwynBleidD的评论,有关对未来模型更改更持久的方法,请参见下面的
  • 在Django中更改数据库表(Altering database tables in Django)
    问题 我正在考虑将Django用于正在启动的项目(fyi,一个基于浏览器的游戏),而我最喜欢的功能之一是使用syncdb根据我定义的Django模型自动创建数据库表(这是我在其他任何框架中都找不到的功能)。 当我在文档中看到此内容时,我已经认为这太好了,无法实现: Syncdb不会更改现有表 syncdb将仅为尚未安装的模型创建表。 安装后,它将永远不会发出ALTER TABLE语句来匹配对模型类所做的更改。 对模型类和数据库模式的更改通常涉及某种形式的歧义,在这种情况下,Django必须猜测要进行的正确更改。 在此过程中可能会丢失关键数据。 如果您对模型进行了更改,并希望更改数据库表以使其匹配,请使用sql命令显示新的SQL结构,并将其与现有的表模式进行比较以得出更改。 似乎更改现有表将必须“手动”完成。 我想知道的是最好的方法。 我想到了两种解决方案: 如文档所述,请在数据库中手动进行更改。 对数据库进行备份,擦除,重新创建表(使用syncdb,因为现在它是从头开始创建表)并导入备份的数据(如果数据库很大,则可能会花费很长时间) 有任何想法吗? 回答1 如对同一主题的其他答案所述,请确保观看YouTube上的DjangoCon 2008 Schema Evolution Panel。 另外,地图上还有两个新项目:Simplemigrations和Migratory。 回答2
  • Django Forms with ReactJS
    Sorry if this seems like a dumb question but I have spent a lot of time on this and unable to figure out an ideal way to do this. I have Django forms rendered using Django templates. Now I want to add a React component to one of the form fields (and perhaps to more than one field in the long term). Based on what I have read so far, its seem best not to mix Django templating with React rendering and have Django serve only as backend API sending JSON data to React, while React takes over the entire form rendering. So I am now trying to re-render my forms entirely through React. Instead of forms
  • django的model.save()为什么不调用full_clean()?(Why doesn't django's model.save() call full_clean()?)
    问题 我只是好奇是否有人知道,除非有理由将django的orm不保存在模型中,否则它不会在模型上调用“ full_clean”。 请注意,当您调用模型的save()方法时,不会自动调用full_clean()。 要为自己的手动创建的模型运行单步模型验证时,需要手动调用它。 django的完整档案 (注意:报价已针对Django 1.6更新...以前的django文档也对ModelForms提出了警告。) 人们为什么不希望这种行为有充分的理由? 我想如果您花时间将验证添加到模型中,则希望每次保存模型时都运行验证。 我知道如何使一切正常工作,我只是在寻找一种解释。 回答1 AFAIK,这是因为向后兼容。 带有排除字段的ModelForms,具有默认值的模型,pre_save()信号等也存在问题。 您可能感兴趣的资源: http://code.djangoproject.com/ticket/13100 http://groups.google.com/group/django-developers/browse_frm/thread/b888734b05878f87 回答2 由于考虑到兼容性,因此在django内核中未启用保存时自动清除。 如果我们正在启动一个新项目,并且希望Model上的默认save方法可以自动清除,则可以使用以下信号在保存每个模型之前进行清除。 from
  • 在Django中,如何从数据库中选择100条随机记录? [复制](In Django, how do I select 100 random records from the database? [duplicate])
    问题 这个问题已经在这里有了答案: 如何使用Django获取两个随机记录(6个答案) 4年前关闭。 myqueryset = Content.objects.filter(random 100) 回答1 Content.objects.all().order_by('?')[:100] 请参阅order_by文档。 还要注意,这种方法无法很好地扩展(实际上,它的扩展确实非常,非常糟糕)。 当您有大量数据时,请参见此SO答案,以获得更好的方式来处理随机选择。 回答2 如果要多次执行此操作,则需要将其设计到数据库中。 如果您只做一次,则可以支付高昂的罚款。 这将为您提供100个具有良好随机性的属性。 但是,它占用大量内存。 pool= list( Content.objects.all() ) random.shuffle( pool ) object_list = pool[:100] 这是另一种也很慢的算法,因为它可能会搜索整个表。 它根本不占用太多内存,并且可能不会精确达到100。 total_count= Content.objects.count() fraction = 100./total_count object_list = [ c for c in Content.objects.all() if random.random() < fraction ]
  • 如何在Django中为用户模型加载SQL Fixture?(How to load sql fixture in Django for User model?)
    问题 有谁知道如何使用sql夹具为auth.User加载初始数据? 对于我的模型,我只是在名为sql的文件夹中有一个<modelname> .sql文件,syncdb可以很好地完成它的工作。 但是我不知道如何为auth.User模型执行此操作。 我已经用谷歌搜索了,但是没有成功。 提前致谢, 奥尔多 回答1 对于SQL固定装置,您必须专门为auth表使用插入语句。 您可以使用python manage.py sql auth命令找到auth表的架构。 一种更简单且与数据库无关的方法(除非您有其他要运行的SQL魔术),就是使用以下数据在应用程序的夹具目录中制作一个JSON或YAML夹具文件: - model: auth.user pk: 100000 fields: first_name: Admin last_name: User username: admin password: "<a hashed password>" 您可以在django shell中快速生成哈希密码 >>> from django.contrib.auth.models import User >>> u = User() >>> u.set_password('newpass') >>> u.password 'sha1$e2fd5
  • Pycharm:为运行manage.py任务设置环境变量(Pycharm: set environment variable for run manage.py Task)
    问题 我已将SECRET_KEY值移出设置文件,并且在加载virtualenv时将其设置。 我可以从python manage.py shell确认该值是否存在。 当我运行Django控制台时, SECRET_KEY丢失了,应该丢失了。 因此,在首选项中,我转到“控制台”>“ Django控制台”并加载SECRET_KEY和适当的值。 我回到Django控制台,然后找到SECRET_KEY 。 不出所料,我还不能运行manage.py Task,因为它尚未找到SECRET_KEY 。 因此,我进入“运行”>“编辑配置”,将SECRET_KEY添加到Django服务器和Django测试中,并添加到项目服务器中。 重新启动Pycharm,确认密钥。 当我运行诸如runserver类的manage.py Task时,我仍然得到KeyError: 'SECRET_KEY'. 我把钥匙放在哪里? 回答1 因为Pycharm不是从终端启动的,所以不会加载您的环境。 简而言之,任何GUI程序都不会继承SHELL变量。 出于某些原因(假设是Mac)请参阅此内容。 但是,对于此问题有几种基本解决方案。 正如@ user3228589发布的那样,您可以在PyCharm中将其设置为变量。 这有几个优点和缺点。 我个人不喜欢这种方法,因为它不是single source 。 为了解决这个问题