【发布时间】:2020-10-06 08:29:59
【问题描述】:
当我运行我的代码时,我试图将一些信息插入到我的数据库中,然后使用 SELECT 调用该信息。当我手动检查数据库时,我可以看到新条目。正在插入该条目,但我的 python 代码在我退出并重新运行它之前看不到它。
这些是通过异步机器人调用的(下面未显示)。但同样的事情发生在下面的自包含代码中。您会注意到一些过度使用提交,因为我读过一些人们在选择之前成功提交的地方,但它不起作用。
我在这里找到了几个与此问题有关的问题,但他们的解决方案似乎都不适用于我。
编辑:如果从代码本身不清楚,这些是将掷骰子添加到数据库中,然后根据纪元日期和条目数返回它们。
import sqlite3, time
from datetime import datetime
def add_roll(user=None, nick=None, argument=None, equation=None, result=None, stat=None, success=None, comment=None):
conn = sqlite3.connect('dicebot.db')
c = conn.cursor()
sql = "INSERT INTO rolls (messagetime, user, nick, argument, equation, result, stat, success, comment) VALUES (?,?,?,?,?,?,?,?,?)"
values = (time.time(), user, nick, argument, equation, result, stat, success, comment)
c.execute(sql,values)
conn.commit()
conn.close()
def get_entry(date_in_epoch=0, date_out_epoch=time.time(), number_of_entries=1):
conn = sqlite3.connect('dicebot.db')
c = conn.cursor()
conn.commit()
select_stmt = '''SELECT * FROM rolls ORDER BY messagetime DESC LIMIT (%s)''' % (number_of_entries,)
if number_of_entries == -1:
select_stmt = '''SELECT * from rolls WHERE messagetime BETWEEN (%s) and (%s) ORDER BY messagetime''' % (date_in_epoch, date_out_epoch)
elif number_of_entries >= 0:
select_stmt = '''SELECT * from rolls WHERE messagetime BETWEEN (%s) and (%s) ORDER BY messagetime DESC LIMIT (%s)''' % (date_in_epoch, date_out_epoch, number_of_entries)
x = c.execute(select_stmt)
records = x.fetchall()
output = []
for record in records:
nick = record[3]
equation = record[5]
result = record[6]
stat = record[7]
success = record[8]
comment = "" if record[9] is None else record[9]
if success is not None:
output.append("**{}:** {} {} {} (Stat={})".format(nick, result, success, comment, stat))
else:
output.append("**{}:** {} {}".format(nick, result, comment))
conn.close()
return output
if __name__ == '__main__':
add_roll("MyName", "MyHandle", "1d6+2", "(3)+2", 5, 45, None)
for record in get_entry(number_of_entries=10):
print (record)
【问题讨论】:
-
表中
messagetime的类型是什么?
标签: python python-3.x sqlite