[英]How do i select the value of a certain column from the last row in sqlite3 and python?
目前,我还没有设置INTEGER PRIMARY KEY
因为我不需要它,但是如果这是最简单的方法,我会设置。
所以我建立了我的数据库和表:
conn = sqlite3.connect('lista.db')
c = conn.cursor()
c.execute('CREATE TABLE IF NOT EXISTS unu(echipa1 TEXT UNIQUE, scor1 TEXT, scor2 TEXT, echipa2 TEXT, '
'cota FLOAT, miza INT, stare INT)')
我插入一些值
c.execute("INSERT OR IGNORE INTO unu( echipa1,scor1, scor2, echipa2, cota, miza, stare ) VALUES (?,?,?,?,?,?,?)",
(echipa1, scor1, scor2, echipa2, cota, miza, stare))
那么如何从最后一行选择stare
的值?
c.execute("SELECT stare FROM unu WHERE id = Max")
所以我知道我没有ID,但是即使我没有为每行分配ID,sqlite也会对行进行计数吗? 如果没有,我将设置一个INTEGER PRIMARY KEY
c.execute('CREATE TABLE IF NOT EXISTS unu(id INTEGER PRIMARY KEY, echipa1 TEXT UNIQUE, scor1 TEXT, scor2 TEXT, echipa2 TEXT, '
'cota FLOAT, miza INT, stare INT)')
然后,我的选择查询会起作用吗?
这取决于您对最后一行的定义。 如果要选择刚插入的行,可以使用cursor.lastrowid
。
c.execute("SELECT stare FROM unu WHERE ROWID=(?)", (c.lastrowid,))
如果您希望任何人都插入最后一行(某人可能已在insert和select语句之间插入了一行),那么您需要一个带有AUTOINCREMENT的PK(仅“ id INTEGER PRIMARY KEY”将使其成为ROWID的副本,这不能保证按月牙顺序排列):
c.execute("SELECT stare FROM unu ORDER BY id DESC LIMIT 1")
您不仅需要声明INTEGER PRIMARY KEY
列,还可以使其变为AUTOINCREMENT
以真正确保最新插入的行也具有最大的ROWID
/ primary key值。 否则,SQLite可能会填补已删除的行或失败/回滚的事务留下的“漏洞”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.