我该如何修复这个错误
我还是个新手,我写的代码在我创建SQL查询之前运行得很好。
我使用sqlite3作为数据库。
这是我的代码:
code.py
print """<INPUT Value="Valider" Type="SUBMIT" >
<head>
<script type="text/javascript">
{
alert('thank you.');
}
</script>
</head>"""
print "</body>"
print "</html>"
conn = sqlite3.connect('database.sqlite')
conn.row_factory = sqlite3.Row
c = conn.cursor()
sql = "INSERT INTO info_calc (my_argv[2], my_argv[3], my_argv[4], sys.platform, getpass.getuser(), machine ) VALUES (%s, %s, %s, %s, %s, %s)
try:
c.execute(sql)
conn.commit()
except:
conn.rollback()
cursor.close()
当我执行我的代码时,出现了这个错误:
sql = "INSERT INTO info_calc (my_argv[2], my_argv[3], my_argv[4], sys.platform, getpass.getuser(), machine ) VALUES (%s, %s, %s, %s, %s, %s)
^
SyntaxError: EOL while scanning string literal
2 个回答
0
你忘记加上 "
了,应该像这样
sql = "INSERT INTO info_calc (application,version,path,os,user,ip) VALUES (%s, %s, %s, %s, %s, %s)"
还有一点,在执行插入查询的时候,你需要提供值
应该是这样
c.execute(sql,(my_argv[2], my_argv[3], my_argv[4], sys.platform, getpass.getuser(), machine ))
0
你忘了在字符串的末尾加上引号。
另外,INSERT语句需要一份列名的列表;my_argv[2]
不是列名。
再者,%s
不是数据库参数的标记;应该用 ?
来代替。
还有,getpass
是一个模块;你不能直接调用它。
sql = "INSERT INTO info_calc (application,version,path,os,user,ip) "+
"VALUES (?,?,?,?,?,?)"
args = my_argv[2], my_argv[3], my_argv[4], sys.platform, getpass.getuser(), machine
c.execute(sql, args)