Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 执行sqlite查询-为什么我得到TypeError?_Python_Sqlite - Fatal编程技术网

Python 执行sqlite查询-为什么我得到TypeError?

Python 执行sqlite查询-为什么我得到TypeError?,python,sqlite,Python,Sqlite,代码是: with sqlite3.connect('example.db', detect_types=sqlite3.PARSE_DECLTYPES) as conn: curr = conn.cursor() vals = ( surveyname , surveydesc , dictObj ,) curr.execute("INSERT INTO Surveys(Name, Desc, DictObject) VALUES (?, ?, ?)", vals)

代码是:

with sqlite3.connect('example.db', detect_types=sqlite3.PARSE_DECLTYPES) as conn:
    curr = conn.cursor()
    vals = ( surveyname , surveydesc , dictObj ,)
    curr.execute("INSERT INTO Surveys(Name, Desc, DictObject) VALUES (?, ?, ?)", vals)
我得到的错误是:

 C:\Python26\html\xlsxhelper.py in register_survey(surveydict={u'q1': {'n': 3, 'nselect': 1, 'qn': 1, 're': {u'a': {'n': 3, 'text': u'\ud30c\ub791'}}, 'text': u'\uc88b\uc544\ud558\ub294 \uc0c9\uae54\uc740?', 'type': 0}, u'q2': {'n': 3, 'nselect': 2, 'qn': 2, 're': {u'a': {'n': 3, 'text': u'\ub625'}}, 'text': u'\uc88b\uc544\ud558\ub294 \uacfc\uc790\ub294? (2\uac1c\uc120\ud0dd)', 'type': 0}, u'q3': {'n': 1, 'nselect': 1, 'qn': 3, 're': {u'a': {'n': 1, 'type': 0}}, 'text': u'\ubd84\ub958', 'type': 1}, u'q4': {'n': 1, 'nselect': 1, 'qn': 4, 're': {u'a': {'n': 1, 'type': 1}}, 'text': u'\uccb4\ud06c', 'type': 1}, 'qn': 4}, surveyname='qwe', surveyinfo='Survey Description\r\nqwe')
  101         with sqlite3.connect('example.db', detect_types=sqlite3.PARSE_DECLTYPES) as conn:
  102             curr = conn.cursor()
  103             vals = (surveyname , surveydesc , dictObj) <= somehow this line is highlighted
  104             curr.execute("INSERT INTO Surveys(Name, Desc, DictObject) VALUES (?, ?, ?)", vals)
  105             conn.commit()                       
vals undefined, surveyname = 'qwe', surveydesc undefined, dictObj = 'eJwLVg8uLSpLrVRwSS1OLsosKMnMz4spiskrLE9V5yow5NIDANCTC5w=\n'
<type 'exceptions.TypeError'>: function takes at most 2 arguments (4 given) 
      args = ('function takes at most 2 arguments (4 given)',) 
      message = 'function takes at most 2 arguments (4 given)'
函数最多接受2个参数意味着什么?我在这里调用什么函数?curr.execute接受两个参数:实际查询和参数。为什么第103行会突出显示?这是一个简单的元组赋值


surveyname和surveyname是简单字符串。dictObj是一个字典,它被压缩成字符串。因此,将三个字符串插入到具有text/text/blob列的行中。我找不到这里出了什么问题。

Python没有运行该代码;它运行的是python文件的早期版本,其中有一行不同的代码;我猜是这样的:

curr.execute("INSERT INTO Surveys(Name, Desc, DictObject) VALUES (?, ?, ?)", surveyname , surveydesc , dictObj)
python回溯必须再次读取源代码,以向您显示导致错误的行,但如果同时更改源代码,它将与导致错误的实际字节码不匹配


重新启动python脚本或运行脚本的任何东西,如HTTP服务器中的WSGI模块;如果问题仍然存在,请删除所有*.pyc文件,并确保在保存对脚本的更改时,其修改日期已更新。

您使用的是什么开发环境?这不是一个常规的python回溯;大量的信息被添加到其中。我怀疑您的开发环境可能是这里源代码和实际执行字节码不匹配的最终原因。@MartijnPieters,这是一个cgitb回溯。我认为这与脚本更新后未编译的模块有关;我手动删除了*.pyo文件,但看不到*.pyc文件在哪里。啊,有趣的是,我自己从未使用过cgitb。也不知道你的CGI是如何运行的。VAL未定义且异常和行不匹配的事实表明,python正在运行的内容与发生错误时.py文件包含的内容不匹配。是否有HTTP服务器或类似服务器需要重新启动?@MartijnPieters代码以以下方式运行:IIS->PyISAPIe->PyIASPIe WSGI module->my codeRight,WSGI模块缓存您的代码;更改源时不会重新加载。您需要重新启动IIS或以其他方式重新加载WSGI模块。