2014-07-15 7 views
0

Я новичок здесь, и у меня есть мой код, там работает хорошо, прежде чем я создам свой 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 
+1

Вы пропускаете '" 'в конце' sql' определения. – Ffisegydd

+0

я исправил, но это не проблема. – Glacius

+0

Никто не может мне помочь? – Glacius

ответ

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) 
+0

не работает: args = my_argv [2], my_argv [3], my_argv [4], sys.platform, getpass(). Getuser(), machine ТипError: объект 'module' не может быть вызван localhost. localdomain - - [15/июл/2014 13:09:33] Статус выхода скрипта CGI 0x100 – Glacius

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

yes Я пробовал: 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) " args = my_argv [2], my_argv [3], my_argv [4], sys.platform, getpass(). getuser(), machine c.execute (sql, args) – Glacius

+0

и у меня есть эта ошибка: args = my_argv [2], my_argv [3], my_argv [4], sys.platform, getpass(). getuser(), machine ТипError: объект 'module' не может быть вызван – Glacius

+0

@Glacius, каковы имена столбцов в вашей таблице info_calc –

Смежные вопросы