鱼C论坛

 找回密码
 立即注册
查看: 2789|回复: 17

djago报错 1054, "Unknown column 'house.id' in 'field list'"

[复制链接]
发表于 2021-3-29 15:45:07 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
我的数据库字段和models里的字段都是一样的报错1054, "Unknown column 'house.id' in 'field list'"
屏幕截图 2021-03-29 154204.png
2.png
3.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-3-29 20:22:02 From FishC Mobile | 显示全部楼层
看信息是你用到了id这个字段,但是数据库里没有
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-3-29 21:10:27 | 显示全部楼层
wp231957 发表于 2021-3-29 20:22
看信息是你用到了id这个字段,但是数据库里没有

第一张就是数据库,蓝色的字段就是我用的字段,没有用id这个字段。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-3-30 00:10:35 | 显示全部楼层
本帖最后由 阿奇_o 于 2021-3-30 00:18 编辑

我记得 如果你没设有主键,Django 会默认自动为表 创建一个 id列,作为主键。

前后涉及的步骤较多,不好讲清楚。你可以仔细看看文档。


# This is an auto-generated Django model module.
# You'll have to do the following manually to clean this up:
#   * Rearrange models' order
#   * Make sure each model has one field with primary_key=True
#   * Make sure each ForeignKey and OneToOneField has `on_delete` set to the desired behavior
#   * Remove `managed = False` lines if you wish to allow Django to create, modify, and delete the table
# Feel free to rename the models, but don't rename db_table values or field names.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-3-30 09:20:46 | 显示全部楼层
你确定你的数据库,是自动由Django 自动生成的?
我记得Django 数据库迁移的时候, ORM 会去判断你是否有设置主键,如果没有的话,会自动帮你添加一个ID 作为主键。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-3-30 10:45:17 | 显示全部楼层
z5560636 发表于 2021-3-30 09:20
你确定你的数据库,是自动由Django 自动生成的?
我记得Django 数据库迁移的时候, ORM 会去判断你是否有 ...

我的数据库是表格导入到数据库的,然后models文件是输入python manage.py inspectdb > models.py生成的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-3-30 10:47:20 | 显示全部楼层
樊敬礼 发表于 2021-3-30 10:45
我的数据库是表格导入到数据库的,然后models文件是输入python manage.py inspectdb > models.py生成的。

这就是问题了吧,   使用ORM 的时候  Django  会自动生成关联的文件,   如果你硬用的话,  只能使用SQL 原生的语法, 别引用ORM。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-3-30 10:50:42 | 显示全部楼层
z5560636 发表于 2021-3-30 10:47
这就是问题了吧,   使用ORM 的时候  Django  会自动生成关联的文件,   如果你硬用的话,  只能使用SQL  ...

那我应该怎么办,我想实现在搜索框输入一个关键字,然后出来的是我数据库中的整条数据。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-3-30 12:39:57 | 显示全部楼层
数据库的链接和查询方法重新写一下。给你一个demo:
    conn = connect(host='mysql-server', port=3306, user='ccd', passwd='123456', db='computer_status',
                   cursorclass=cursors.DictCursor)
    myconn = conn.cursor()
    sql = 'SELECT * FROM sign_computer_status'
    myconn.execute(sql)
    r_computer_status = myconn.fetchall()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-3-30 12:48:11 | 显示全部楼层
z5560636 发表于 2021-3-30 12:39
数据库的链接和查询方法重新写一下。给你一个demo:

这个写在哪个文件里面
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-3-30 13:45:31 | 显示全部楼层
哪里用写哪里,这个就是查询数据库的一种方式。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-3-30 14:28:03 | 显示全部楼层
z5560636 发表于 2021-3-30 13:45
哪里用写哪里,这个就是查询数据库的一种方式。

麻烦您帮我看看我发的第三张图片,里面的handle方法,就是我要用的地方,您帮我看看要改成什么样
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-3-30 14:58:51 | 显示全部楼层
在哪里用该哪里啊! 只是说你获取数据库的方式报错了,那就用直接执行SQL 语句的方式来弄啊,
import MySQLdb
conn = MySQLdb.connect(host='数据库IP',port=3306,user='账号',passwd='密码',db='数据库名字', charset="utf8")
cur = conn.cursor()
cur.execute(”select * from 数据库表名“)
db = cur.fetchall()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-3-30 15:18:54 | 显示全部楼层
z5560636 发表于 2021-3-30 14:58
在哪里用该哪里啊! 只是说你获取数据库的方式报错了,那就用直接执行SQL 语句的方式来弄啊,

改了报别的错
[img]C:\Users\86173\Desktop\1.pngC:\Users\86173\Desktop\2.png[/img]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-3-30 15:19:31 | 显示全部楼层
樊敬礼 发表于 2021-3-30 15:18
改了报别的错
[/img]

def handle(request):
    text = request.POST["搜索内容"]
    service.addText(text)
    #db = House.objects.all()
    conn = MySQLdb.connect(host='127.0.0.1',port=3306,user='root',passwd='cy218218',db='fangyuan', charset="utf8")
    cur = conn.cursor()
    cur.execute("select * from house")
    db = cur.fetchall()
    po_list = []
    for i in db:
        if text in i.region:
            po_list.append(i.unit)

    return render(request,"user/resp.html",{"resp":po_list})

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-3-30 15:20:03 | 显示全部楼层
樊敬礼 发表于 2021-3-30 15:19
def handle(request):
    text = request.POST["搜索内容"]
    service.addText(text)

报错AttributeError at /handle/
'tuple' object has no attribute 'region'
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-3-30 23:34:35 | 显示全部楼层
本帖最后由 z5560636 于 2021-3-30 23:37 编辑
樊敬礼 发表于 2021-3-30 15:20
报错AttributeError at /handle/
'tuple' object has no attribute 'region'

if text in i.region:


这个判断语句也要改一下。

自己用print 调试一下db里面的数据。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-3-30 23:52:12 | 显示全部楼层
你這張表沒有主鍵鍵、外鍵
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-16 05:08

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表