梦中情萱 2021-10-27 08:54 采纳率: 63.9%
浏览 49
已结题

Django连接已有Oracle时的主键设置问题,没主键无法查询怎么办?

Django在创建model时,需要指定某一个字段是primary key=True,如果不指定的话
进行ORM查询时会报错
因为查询必须带主键。于是有了如下问题:
在使用已有的数据库时,假如库是oracle中的A表,A表在库中没有主键,A表的所有列也都有重复项
如果我想要使用django连接该表,那如下问题怎么解决呢?
建model时能否指定某一个现有的列是primary_key=true,因为没有它无法查询.但是表中数据有重复的项啊,也可以当主键吗?(我尝试了没报错)如果不指定primary_key,查询又会报错。现在我只能修改表,在现有库中增加一个id列当主键,但是库我不能动啊。
怎么办呢?
请问这个ORM里面指定的主键,是不是并不一定非得是oracle里真正的主键?是不是重复了也没关系啊?

  • 写回答

2条回答 默认 最新

  • ESinker 2021-10-27 09:23
    关注

    你应该是先有数据库,然后想把表逆向成model. orm 在你建立model 的时候如果不加主键会自动加一个主键,没有主键就不能使用model。
    并不是随意将一个字段设置成主键就可以,它应该是实际存在的,或者唯一键。因为主键是ORM为了确定一个object对应的row而需要的。如果随意使用别的字段当做主键,get等操作很可能出现错误。官网给的使用方法,你可以看下

    对于这种表(没有主键的)建议用raw 执行原始sql 进行数据操作。或者在表中加上主键字段

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 11月4日
  • 已采纳回答 10月27日
  • 创建了问题 10月27日

悬赏问题

  • ¥15 对于知识的学以致用的解释
  • ¥50 三种调度算法报错 有实例
  • ¥15 关于#python#的问题,请各位专家解答!
  • ¥200 询问:python实现大地主题正反算的程序设计,有偿
  • ¥15 smptlib使用465端口发送邮件失败
  • ¥200 总是报错,能帮助用python实现程序实现高斯正反算吗?有偿
  • ¥15 对于squad数据集的基于bert模型的微调
  • ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存
  • ¥15 CST保存项目时失败