Django:如何将sql语句插入sqlite3数据库并配置模型

时间:2014-12-15 19:31:40

标签: django django-models sqlite

我正在使用Django进行项目。我有一个包含insert语句的.sql文件。如何将它们放入我的sqlite3数据库并让它们与我的模型一起使用?

项目“fortune”有一个models.py文件,如下所示:

class fortune(models.Model):
  id = models.IntegerField(primary_key=True)
  category = models.CharField(max_length=50)
  length = models.IntegerField()
  aphorism = models.CharField(max_length=5000)

我有一个带有Insert语句列表的.sql文件,如下所示:

INSERT INTO "fortune_fortune" VALUES(1,'fortunes',127,'Arbitrary Text');

当我在配置了我的项目的db.sqlite3文件上运行.schema时,我看到:

CREATE TABLE fortune_fortune(id integer, category varchar(50), length integer, aphorism varchar(5000));

我尝试在我的sqlite shell中使用.read而没有运气。我也试过在bash中键入“sqlite3 file.sqlite3< file.sql”。我在这里缺少一些东西,但我似乎无法解决这个问题。

感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

好的,等等..通常你不使用sql语句将数据插入db,如果你使用django。

将数据插入db,你使用django ORM,这比这些丑陋的sql语句更有趣。

fortune = fortune(category='new cat', length=19, aphorism='i love life')
fortune.save()

然后结果,你的db中的fortune表中会有一个新行。刚刚阅读了django docs,你感到高兴!

还有一件事,类名总是在资本中。

问题:

Django提供了一个钩子,用于在运行迁移时传递数据库任意SQL,该SQL在CREATE TABLE语句之后执行。您可以使用此挂钩填充默认记录,也可以创建SQL函数,视图,触发器等。

钩子很简单:Django只在你的app目录中查找名为sql/<modelname>.sql的文件,其中<modelname>是小写的模型名称。

more in docs