【问题标题】:How to get the rowid of a word in the database sqlite3?如何获取数据库sqlite3中单词的rowid?
【发布时间】:2018-04-10 21:23:46
【问题描述】:

我正在尝试在 sqlite3 中获取用户名的 rowid,我已经掌握了它的基础知识,但是当我运行它时,我会得到类似 'sqlite3.Cursor object at 0x03885660' 的东西,并且每次我运行它时它都会改变相同的用户名。我知道这是因为我打印了 rowid 但我找不到替代方法。

这是我的代码:

def sign_in():
    username = input("What is your username?")
    password = input("What is your password?")
    c.execute("SELECT username FROM stuffToPlot")
    names = {name[0] for name in c.fetchall()} 
    if username in names:
        rowid = c.execute("SELECT rowid, * FROM stuffToPlot WHERE username = (username)")
        print(rowid)

【问题讨论】:

  • 为什么需要 ROWID?那不是永久标识符。它只是当前查询执行的标识符,下次查询相同数据时可能会完全不同。
  • 一个 rowid 在插入时被分配给一行,并且是不可变的(永远不会改变),除非该行被删除并重新插入(意味着它是另一行,而不是同一行!)

标签: python sqlite rowid


【解决方案1】:

您已经到达了光标执行该查询的位置,但是您需要告诉它要从中返回什么。返回与该查询的第一个匹配项?返回每条记录?根据您的需要获取数据。可以使用fetchone()fetchall()等多种方式获取。

if username in names:
    c.execute("SELECT rowid, * FROM stuffToPlot WHERE username = (username)")
    rowid = c.fetchone()
    print(rowid)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-13
    • 1970-01-01
    • 1970-01-01
    • 2010-10-31
    相关资源
    最近更新 更多