程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了sqlite3 无法让数据库保持更新大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决sqlite3 无法让数据库保持更新?

开发过程中遇到sqlite3 无法让数据库保持更新的问题如何解决?下面主要结合日常开发的经验,给出你关于sqlite3 无法让数据库保持更新的解决方法建议,希望对你解决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,请注明来意。
标签:sqlite3