我正在尝试在python脚本中使用SQLite插入操作,当我在命令行上手动执行它时它会起作用但是当我尝试在Web上访问它时它不会将它插入数据库中。这是我的功能:
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()
当它在Web上执行时,它只显示输出“Opened database successfully”但似乎没有将值插入数据库。我错过了什么?这是服务器配置问题吗?我已经检查了写入时的数据库权限,并且它们已正确设置。
答案 0 :(得分:2)
问题几乎可以肯定是,您尝试在当前工作目录中创建或打开名为database.db
的数据库,并且以下情况之一为真:
commit
INSERT
}。execute
- INSERT
)。同时,你没有提到什么是web服务器/容器等。你正在使用,但显然你已经将它配置为静默地吞下所有错误,这对于任何调试来说都是非常非常糟糕的主意。将其配置为以某种方式报告错误。否则,你永远不会弄清楚出了什么问题。
如果您无法控制服务器配置,则至少可以将所有代码包装在try
/ except
中,并手动将异常记录到您具有写访问权限的文件中(理想情况下)通过logging
模块,或只有open
和write
,如果最糟糕的情况发生。)
或者,你可以用愚蠢的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()