【问题标题】:django equivalent to sqlalchemy's sessionmakerdjango 相当于 sqlalchemy 的 sessionmaker
【发布时间】:2017-01-11 00:14:13
【问题描述】:

我是 Django 1.9 的新手(对烧瓶也很陌生),并且正在尝试以与 sqlite sessionmaker 相同的方式填充我的 models.py。

这是我的 models.py 的一个片段:

@python_2_unicode_compatible
class Location(models.Model):
def __str__(self):
    return self.location_text

location_text = models.CharField(max_length=200)
travel_date = models.DateTimeField('date traveled')


@python_2_unicode_compatible
class Countries(models.Model):
    def __str__(self):
        return self.capitals

    location = models.ForeignKey(Location, on_delete=models.CASCADE)
    capitals = models.CharField(max_length=200)

使用 flask 和 sqlalchemy,我将创建一个新文件并能够执行以下操作:

from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from this_app.models import Location, Countries

engine = create_engine("the db")
Base.metadata.bind = engine
DBSession = sessionmaker(bind=engine)
session = DBSession()

loc1 = Location(location_text = "Indonesia")
session.add(loc1)
session.commit()

cap = Countries(
    capitals="Jakarta",
    location=loc1
    )
session.add(cap)
session.commit()

django 的 orm 是怎么做到的?

【问题讨论】:

  • 我不确定你在问什么。向您展示如何创建模型的同一教程将向您展示如何向它们添加数据。
  • 嘿丹尼尔,如果有,我没看到。我在 django 教程网站上看到的唯一内容是如何使用 shell 添加信息。我在 shell 上有一个太多的清单清单,并且希望可以选择类似于烧瓶允许的方式。
  • 为什么使用 shell 与任何其他代码有什么不同?

标签: python django sqlalchemy


【解决方案1】:

如果我没听错的话,你想在一个查询中保存对象。

这可以通过bulk_create 完成

该方法以高效的方式将提供的对象列表插入到数据库中(一般只有1个查询,不管有多少对象)

【讨论】:

    【解决方案2】:
    loc1 = Location.objects.create(location_text="Indonesia")
    cap = Countries.objects.create(capitals="Jakarta", location=loc1)
    

    就是这样。

    【讨论】:

      猜你喜欢
      • 2011-06-03
      • 2011-09-25
      • 2011-05-02
      • 2012-01-13
      • 1970-01-01
      • 2011-06-19
      • 2018-05-19
      • 2011-04-10
      • 1970-01-01
      相关资源
      最近更新 更多