我该如何修复这个错误

0 投票
2 回答
1066 浏览
提问于 2025-04-18 13:23

我还是个新手,我写的代码在我创建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)

撰写回答