我该如何修复错误

时间:2014-07-15 09:43:31

标签: python linux database sqlite

我是新手,我有自己的代码,在创建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 :(得分: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 ))

答案 1 :(得分: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)