大佬教程收集整理的这篇文章主要介绍了sqlite3 无法让数据库保持更新,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
这是一个不和谐的机器人来存储用户游戏数据。只要机器人永远不会关闭,它就可以工作,但是如果我关闭它,它会重新初始化数据库。我已经尝试注释掉初始用户插入,类似于注释掉数据库本身的创建,但这使得第 57 行中对“行”的引用无法正常工作。
import discord
import os
import sqlite3
conn = sqlite3.connect('test.db')
print("Opened database successfully")
#CREATED DATABASE
#conn.execute('''create table MEMBERS
# (ID INT NOT NulL,# name TEXT NOT NulL,# LEVEL INT NOT NulL,# CP INT,# CLASS CHAR(25))''')
#print ("table created successfully")
#INSERT USER
conn.execute("INSERT INTO MEMBERS (ID,name,LEVEL,CP,CLASS) \
VALUES (229039794787713025,'Solumn',125,5525391,'Mage')");
conn.execute("INSERT INTO MEMBERS (ID,CLASS) \
VALUES (624678639778267136,'SacredPugsly','None')");
conn.execute("INSERT INTO MEMBERS (ID,CLASS) \
VALUES (159985870458322944,'Noxis',124,10,'Huntard')");
bot = discord.ClIEnt()
@bot.event
async def on_ready():
guild_count = 0
for guild in bot.guilds:
print(f"- {guild.ID} (name: {guild.namE})")
guild_count = guild_count + 1
print("AlIEnBot is in " + str(guild_count) + " servers.")
def check(messagE):
try:
int(message.content)
return True
except ValueError:
return false
@bot.event
async def on_message(messagE):
#deBUG to check user ID'set
print(message.author.ID)
if message.content.startswith('!show'):
#SELECT USER
cursor = conn.execute("SELECT * from MEMBERS WHERE ID=?",(message.author.ID,))
for row in cursor:
print ("ID = ",row[0])
response = discord.Embed(title=row[1],color=0x3498db)
response.add_fIEld(name="Level",value=row[2],inline=falsE)
response.add_fIEld(name="CP",value=row[3],inline=falsE)
response.add_fIEld(name="Class",value=row[4],inline=falsE)
await message.chAnnel.send(embed=responsE)
if message.content.startswith('!updatecp'):
await message.chAnnel.send("Enter your CP")
cp = await bot.wait_for('message',timeout = 60,check=check)
attempt = int(cp.content)
cursor = conn.execute("updatE MEMBERS SET cp=? WHERE ID=?",(int(attempt),message.author.ID))
if message.content.startswith('!updatelevel'):
await message.chAnnel.send("Enter your Level")
lvl = await bot.wait_for('message',check=check)
attempt = int(lvl.content)
cursor = conn.execute("updatE MEMBERS SET LEVEL=? WHERE ID=?",(attempt,message.author.ID))
if message.content.startswith('!Help'):
response = discord.Embed(title='Bot Commands',color=0x3498db)
response.add_fIEld(name="!updatecp",value='Allows you to adjust your CP',inline=falsE)
response.add_fIEld(name="!updatelevel",value='Allows you to adjust your level',inline=falsE)
response.add_fIEld(name="!show",value='Shows you your character data',inline=falsE)
await message.chAnnel.send(embed=responsE)
#conn.close()
from dotenv import load_dotenv
load_dotenv()
bot.run(os.getenv("disCORD_TOKEN"))```
您似乎从不commit
您的书面数据。插入后执行 conn.commit()
或将您的连接 isolation_level
设置为 None
。
Documentation
以上是大佬教程为你收集整理的sqlite3 无法让数据库保持更新全部内容,希望文章能够帮你解决sqlite3 无法让数据库保持更新所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。