【发布时间】: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 在插入时被分配给一行,并且是不可变的(永远不会改变),除非该行被删除并重新插入(意味着它是另一行,而不是同一行!)