梦中情萱 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日

悬赏问题

  • ¥188 寻找能做王者评分提取的
  • ¥15 matlab用simulink求解一个二阶微分方程,要求截图
  • ¥30 乘子法解约束最优化问题的matlab代码文件,最好有matlab代码文件
  • ¥15 写论文,需要数据支撑
  • ¥15 identifier of an instance of 类 was altered from xx to xx错误
  • ¥100 反编译微信小游戏求指导
  • ¥15 docker模式webrtc-streamer 无法播放公网rtsp
  • ¥15 学不会递归,理解不了汉诺塔参数变化
  • ¥15 基于图神经网络的COVID-19药物筛选研究
  • ¥30 软件自定义无线电该怎样使用