<p>我认为,最好的做法是使用一条SQL语句来更新记录。你知道吗</p>
<p>因为<a href="https://stackoverflow.com/a/2510670/1513933">SQLite has no boolean value</a>,所以需要设置值<strong>1</strong>(而不是True)。你知道吗</p>
<p>例如,语句可以是:</p>
<pre><code>import time
st = "UPDATE reminderFormat SET Reminded = 1 " \
"WHERE FutureTime <= {currentTime}".format(currentTime=time.time())
</code></pre>
<p><strong>编辑:演示</p>
<p>下面是一个演示:</p>
<pre><code>import time
import sqlite3
records = [
(20183740995, 1503330725.0, "testtt", 0),
(20183740995, 1503330732.0, "testtt", 0),
(20183740995, 1503331334.0, "testtt", 0),
(20183740995, 1509999999.0, "testtt", 0),
]
con = sqlite3.connect(":memory:")
# Create the table
con.execute("create table reminderFormat(AuthorID, FutureTime, Message, Reminded)")
# Fill the table
con.executemany("INSERT INTO reminderFormat(AuthorID, FutureTime, Message, Reminded) VALUES (?, ?, ?, ?)", records)
curr_time = time.time()
con.execute("UPDATE reminderFormat SET Reminded = 1 WHERE FutureTime <= ?", (curr_time,))
# Print the table contents
for row in con.execute("SELECT AuthorID, FutureTime, Reminded FROM reminderFormat"):
print(row)
</code></pre>
<p>你会得到:</p>
<pre><code>(20183740995, 1503330725.0, 1)
(20183740995, 1503330732.0, 1)
(20183740995, 1503331334.0, 1)
(20183740995, 1509999999.0, 0)
</code></pre>