gpt4 book ai didi

python - SQLite 在 Python 脚本中插入命令在 Web 上不起作用

转载 作者:行者123 更新时间:2023-11-29 08:16:39 27 4
gpt4 key购买 nike

我正在尝试在 python 脚本中使用 SQLite 插入操作,当我在命令行上手动执行它时它可以工作,但是当我尝试在网络上访问它时它不会将其插入数据库中。这是我的功能:

def insertdb(unique_id,number_of_days):
conn = sqlite3.connect('database.db')
print "Opened database successfully";
conn.execute("INSERT INTO IDENT (ID_NUM,DAYS_LEFT) VALUES (?,?)",(unique_id,number_of_days));
conn.commit()
print "Records created successfully";
conn.close()

当它在网络上执行时,它只显示输出“成功打开数据库”,但似乎没有将值插入数据库。我缺少什么?这是服务器配置问题吗?我检查了数据库的写入权限,它们设置正确。

最佳答案

问题几乎可以肯定是您正在尝试在当前工作目录中创建或打开名为 database.db 的数据库,并且以下情况之一为真:

  • 数据库存在,但您无权写入该数据库。因此,一切正常,直到您尝试执行需要写入访问权限的操作(例如提交INSERT)。
  • 数据库存在,并且您有权写入该数据库,但您无权在该目录中创建新文件。因此,一切正常,直到 sqlite 需要创建一个临时文件(它几乎总是用于执行-ing INSERT)。

同时,您没有提及什么网络服务器/容器/等。你正在使用,但显然你已经将它配置为只是默默地吞下所有错误,这对于任何调试来说都是一个非常非常糟糕的主意。配置它以某种方式报告错误。否则,您将永远弄清楚出现问题的原因。

如果您无法控制服务器配置,您至少可以将所有代码包装在 try/ except 中,并手动将异常记录到您想要的某个文件中。具有写入权限(最好通过logging模块,或者只是openwrite,如果最坏的情况发生)。

或者,您可以使用愚蠢的 print 语句来做到这一点,就像您已经在做的那样:

def insertdb(unique_id,number_of_days):
conn = sqlite3.connect('database.db')
print "Opened database successfully";
try:
conn.execute("INSERT INTO IDENT (ID_NUM,DAYS_LEFT) VALUES (?,?)",(unique_id,number_of_days));
conn.commit()
print "Records created successfully";
except Exception as e:
print e # or, better, traceback.print_exc()
conn.close()

关于python - SQLite 在 Python 脚本中插入命令在 Web 上不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20484247/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com