美文网首页
Django加载数据库表时出现django.db.utils.O

Django加载数据库表时出现django.db.utils.O

作者: 丙吉 | 来源:发表于2022-07-06 15:41 被阅读0次

问题

在用Django加载已有数据库表时,出现
django.db.utils.OperationalError: (1054, "Unknown column 'test.id' in 'field list'")

操作方式

因为是原有的数据表,所以不用再在应用中做表迁移,表生成的部分;

# 在项目文件夹下用此语句查看数据库表中的表类
python manage.py inspectdb
# 可以用如下语句保存models.py中的各类,也可把需要的部分粘到models.py文件中
python manage.py inspectdb > models.py

这样操作后,报上错,原因是id列没有;

网上大多数让删除重迁移,操作方法如下:

暴力破解:
1、删除app下migrations下除_init.py外的所有文件
2、删除相关的表(之前增加的数据会丢失)
3、删除django_migrations表中app=“autotest”对应的记录

重新执行:
python manage.py makemigrations
python manage.py migrate
参考:https://www.e-learn.cn/topic/891088

我想尽量在不重建数据表的情况下,能从数据表中读取数据,具体操作如下:

1。在Mysql中的该表中,插入一列,主键自增;
create table if not exists test(
    msisdn varchar(45),
    lon float,
    lat float
    );
load data local infile 'D:\\13.txt' into table test FIELDS TERMINATED BY '  ' lines terminated by '\n';

alter table test add column id int primary key auto_increment;
2。在应用的models.py文件下的该表类中加入一个列
id = models.IntegerField(primary_key=True)
image.png

警告:创建一个数据库测试表本来玩,尽量不要在原始数据上操作。

image.png
参考:https://docs.djangoproject.com/en/1.8/howto/legacy-databases/
https://wenku.baidu.com/view/f391ba6030687e21af45b307e87101f69f31fb54.html
然后再在views,文件中引用即可。
image.png

相关文章

网友评论

      本文标题:Django加载数据库表时出现django.db.utils.O

      本文链接:https://www.haomeiwen.com/subject/ndjybrtx.html