我正在使用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”。我在这里缺少一些东西,但我似乎无法解决这个问题。
感谢您的帮助。
答案 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>
是小写的模型名称。