【问题标题】:Python sqlite Internal Server ErrorPython sqlite 内部服务器错误
【发布时间】:2014-04-15 00:34:24
【问题描述】:

我正在开发一个后端由 Python 提供支持的网站。以下脚本从 JavaScript 接收值并将其写入数据库。

import cgi
import sqlite3

form = cgi.FieldStorage()
brand = form['brand'].value
model = form['model'].value

db = sqlite3.connect("dbase.db")
query = "INSERT INTO requests (brand, model) VALUES (?, ?)"
db.execute(query, (brand, model,))
db.commit()
db.close()

但是调用脚本会返回500 Internal Server Error。令我惊讶的是,以下代码在终端上独立运行非常完美。

import sqlite3

brand = 'nokia'
model = 'lumia 625'

db = sqlite3.connect("dbase.db")
query = "INSERT INTO requests (brand, model) VALUES (?, ?)"
db.execute(query, (brand, model,))
db.commit()
db.close()

我正在使用 Python 2.7.5 并在 Lighttpd 服务器上运行。此外,db.execute() 部分是发生错误的地方。 我该如何解决这个问题?

【问题讨论】:

  • 你有错误信息吗?我愿意打赌sqlite3.OperationalError: no such table requests 参与其中。
  • 把它放在 CGI 脚本的开头:import cgitb; cgitb.enable().
  • 您在 sqlite3.connect() 调用中使用了 相对 路径; sqlite3 不会抱怨在 LigHTTPD 为您的脚本设置的当前工作目录中找不到数据库,但它将是空的并且其中没有表。
  • 编写 CGI 脚本时,使用cgitb module 可以更轻松地查看脚本产生的错误。
  • 那你没有打开文件的权限。请记住,CGI 脚本是在不同的用户帐户下运行的!

标签: python sqlite internal-server-error


【解决方案1】:

如果没有数据库 dbase 和表 requests 可能会发生这种情况。您需要一个用于插入字段的数据库和表。您可以使用此查询创建数据库

sqlite3 dbase.db

接下来你需要为此创建一个表

create table requests(brand varchar(10), model varchar2(10));

然后你的文件将执行

【讨论】:

  • 我已经创建了数据库。我只想在其中插入新值。数据库文件和python脚本在同一目录下。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-09
  • 2015-11-22
  • 2018-11-14
  • 2016-04-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多