樊敬礼 发表于 2021-3-29 15:45:07

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

我的数据库字段和models里的字段都是一样的报错1054, "Unknown column 'house.id' in 'field list'"

wp231957 发表于 2021-3-29 20:22:02

看信息是你用到了id这个字段,但是数据库里没有

樊敬礼 发表于 2021-3-29 21:10:27

wp231957 发表于 2021-3-29 20:22
看信息是你用到了id这个字段,但是数据库里没有

第一张就是数据库,蓝色的字段就是我用的字段,没有用id这个字段。

阿奇_o 发表于 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.

z5560636 发表于 2021-3-30 09:20:46

你确定你的数据库,是自动由Django 自动生成的?
我记得Django 数据库迁移的时候, ORM 会去判断你是否有设置主键,如果没有的话,会自动帮你添加一个ID 作为主键。

樊敬礼 发表于 2021-3-30 10:45:17

z5560636 发表于 2021-3-30 09:20
你确定你的数据库,是自动由Django 自动生成的?
我记得Django 数据库迁移的时候, ORM 会去判断你是否有 ...

我的数据库是表格导入到数据库的,然后models文件是输入python manage.py inspectdb > models.py生成的。

z5560636 发表于 2021-3-30 10:47:20

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

这就是问题了吧,   使用ORM 的时候Django会自动生成关联的文件,   如果你硬用的话,只能使用SQL 原生的语法, 别引用ORM。

樊敬礼 发表于 2021-3-30 10:50:42

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

那我应该怎么办,我想实现在搜索框输入一个关键字,然后出来的是我数据库中的整条数据。

z5560636 发表于 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()

樊敬礼 发表于 2021-3-30 12:48:11

z5560636 发表于 2021-3-30 12:39
数据库的链接和查询方法重新写一下。给你一个demo:

这个写在哪个文件里面

z5560636 发表于 2021-3-30 13:45:31

哪里用写哪里,这个就是查询数据库的一种方式。

樊敬礼 发表于 2021-3-30 14:28:03

z5560636 发表于 2021-3-30 13:45
哪里用写哪里,这个就是查询数据库的一种方式。

麻烦您帮我看看我发的第三张图片,里面的handle方法,就是我要用的地方,您帮我看看要改成什么样

z5560636 发表于 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()

樊敬礼 发表于 2021-3-30 15:18:54

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

改了报别的错
C:\Users\86173\Desktop\1.pngC:\Users\86173\Desktop\2.png

樊敬礼 发表于 2021-3-30 15:19:31

樊敬礼 发表于 2021-3-30 15:18
改了报别的错


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})

樊敬礼 发表于 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'

z5560636 发表于 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里面的数据。

TsaiYen 发表于 2021-3-30 23:52:12

你這張表沒有主鍵鍵、外鍵
页: [1]
查看完整版本: djago报错 1054, "Unknown column 'house.id' in 'field list'"