多次显示的属性 (sqlite3/flask)

Attributes showing multiple times (sqlite3/flask)

提问人:JesusOfCarrots 提问时间:9/28/2023 更新时间:9/28/2023 访问量:42

问:

我的sqlite3数据库遇到了一些问题。 我在 python 中创建数据库并在同一文件中运行我的 flask 服务器。 在我的 index.html 文件中,我想将表显示为列表。

        {% for name in names %}
        <li>{{ name }}</li>
        {% endfor %}

但是,这会导致一些问题。在 python 中,我只选择 name 属性(我有 2 个),它们以正确的顺序显示,但它们会重复。所以最后列表包含我的 4 个属性的 2 倍。

我能够通过将我的 python 代码更改为: 来“修复”这个问题。 但现在我添加了一些功能。其中之一是删除行。当我单击删除按钮时,它会删除该条目,但是当我重新加载页面时,会出现完全相同的条目。我删除并重新加载了 7 次,然后它终于永远消失了。SELECT DISTINCT name FROM my_table

这是我创建数据库的地方:

con = sqlite3.connect('database.db')
cur = con.cursor()

cur.execute('''
    CREATE TABLE IF NOT EXISTS inv (
        id INTEGER PRIMARY KEY,
        specific TEXT,
        name TEXT,
        amount REAL,
        place TEXT
    )
''')

cur.executemany('''
    INSERT INTO inv (specific, name, amount, place)
    VALUES (?, ?, ?, ?)
''', [
    ('220Ohm', 'Resistor', 3, 'Place1'),
    ('400Ohm', 'Resistor', 10, 'Place2'),
    ('5A', 'Switch', 7, 'Place3'),
])

con.commit()
con.close()

所以我尝试删除并重新创建我的数据库。我也尝试了这个“清洁命令”:

    con = sqlite3.connect('database.db')
    cur = con.cursor()
    cur.execute('''
        DELETE FROM inv
        WHERE id NOT IN (
                SELECT MIN(id)
                FROM inv
                GROUP BY specific, name, place
        );
''')
    print('Succsessfully cleaned db')

但这并没有改变任何事情。

对于钙化:这是我希望我的页面看起来像的:

  • 名称1
  • 名称2

但是当我删除 DISTINCT 命令时,它看起来像这样:

  • 名称1
  • 名称2
  • 名称1
  • 名称2
  • 名称1
  • 名称2
  • 名称1
  • 名称2
python sqlite 烧瓶 sqlite3-python

评论

0赞 nbk 9/28/2023
您的样本不会显示您的行为 dbfiddle.uk/Vd1EN8uA
0赞 Barmar 9/28/2023
您有两行,其中 .一个是 220 欧姆,另一个是 400 欧姆。name=Resister
1赞 Barmar 9/28/2023
因此,返回所有名称而不使用名称的查询将返回这些重复项。DISTINCT
0赞 JesusOfCarrots 9/28/2023
@nbk 那么这可能是我的html代码有问题吗?
0赞 nbk 9/28/2023
这很难说,因为我们只看到一瞥,但我也猜你的显示代码会重复多次

答: 暂无答案