这是我得到的当前错误,我找不到正确的语法。
第58行,in cur.execute(“INSERT INTO Results VALUES(?,?,?)',('scan1','ip1',[lite.Binary(nmap)]”) sqlite3.OperationalError:near“',('”:语法错误
CODE BELOW
#!usr/bin/python
import xml.etree.ElementTree as ETree
import sqlite3 as lite
import time
#
localtime = time.localtime()
print ############################################################################
print ### ###
print ### Current Time: "localtime" ###
print ### IS 501 Project by Ross Hickey ###
print ### PyCode (IS 501) is designed to take exports from Nessus, ###
print ### Retina, and Nmap then import the xml outputs into SQLite3 ###
print ### using Python code. From there the code will take the database ###
print ### files and display them in a readable HTML format. ###
print ### ###
print ############################################################################
################################################################################
#
# Creating database
#
################################################################################
con = lite.connect('HickeyIS501.db');
cur = con.cursor()
################################################################################
#
# Table Creation
#
################################################################################
with con:
cur.execute('''CREATE TABLE Results (scanner TEXT, ipaddr TEXT, file BLOB)''')
################################################################################
#
# Parsing the XML
# BLOB data using
# ElementTree
#
################################################################################
nmap = "nmap-results.xml"
nessus = "nessus-results.nessus"
retina = "retina-results.xml"
#NMAP
with open(nmap, "rb") as nmapdata:
nmapblob = nmapdata.read()
timestamp = time.time()
cur.execute('INSERT INTO Results VALUES(?,?,?)',('scan1','ip1',lite.Binary(nmapblob))
cur.execute('SELECT * FROM Results')
#print cur.fetchall()
#NESSUS
with open(nessus, "rb") as nessusdata:
nessusblob = nessusdata.read()
timestamp = time.time()
cur.execute('INSERT INTO Results VALUES(?,?,?)',('scan1','ip1',lite.Binary(nessusblob))
cur.execute('SELECT * FROM Results')
#print cur.fetchall()
#RETINA
with open(retina, "rb") as retinadata:
retinablob = retinadata.read()
timestamp = time.time()
cur.execute('INSERT INTO Results VALUES(?,?,?)',('scan1','ip1',lite.Binary(retinablob))
cur.execute('SELECT * FROM Results')
#print cur.fetchall()
############################################################################
#
# Building the HTML tables
#
############################################################################
with open('Results.html','wb') as logitnow:
logitnow.write("<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n")
logitnow.write("<html xmlns=\"http://www.HickeyIS501.html\">\n")
logitnow.write("<head>\n")
logitnow.write("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n")
logitnow.write("<title>Scan Results</title>\n")
logitnow.write("<style type=\"text/css\">\n")
logitnow.write(" ul.menu { \n")
logitnow.write(" list-style:none; /* remove bullets */ \n")
logitnow.write(" background:#999; \n")
logitnow.write(" overflow:auto; /* span the width of the container */ \n")
logitnow.write(" padding:0; margin:0; /* reset browser defaults */ \n")
logitnow.write(" height:100%; /* ie6 fix */ \n")
logitnow.write(" } \n")
logitnow.write(" ul.menu li { \n")
logitnow.write(" display:inline; /* line-up the list items horizontally */ \n")
logitnow.write(" padding:0; margin:0; /* again, reset browser defaults */ \n")
logitnow.write(" } \n")
logitnow.write(" ul.menu li a { \n")
logitnow.write(" padding:10px 20px; \n")
logitnow.write(" background:#999; \n")
logitnow.write(" color:#fff; \n")
logitnow.write(" text-decoration:none; \n")
logitnow.write(" display:block; /* block it baby! */ \n")
logitnow.write(" float:left; /* float each list item to the left */ \n")
logitnow.write(" } \n")
logitnow.write(" ul.menu li a:hover { \n")
logitnow.write(" background:#777; \n")
logitnow.write(" } \n")
logitnow.write("</style>\n")
logitnow.write("</head>\n")
logitnow.write("<body>\n")
logitnow.write(" <ul class=\"menu\"> \n")
logitnow.write(" <li><a href=\"./Nmap_Results.html\">Nmap</a></li> \n")
logitnow.write(" <li><a href=\"./Nessus_Results.html\">Nessus</a></li> \n")
logitnow.write(" <li><a href=\"./Retina_Results.html\">Retina</a></li> \n")
logitnow.write(" </ul>\n")
with open("output.html", "wb") as out:
out.write("<DOCTYPE>\n")
out.write("<html>\n")
out.write("<p>Hello World</p>\n")
out.write("</html>\n")
答案 0 :(得分:1)
lite.Binary()有&#39; nmap&#39; (文件名)作为输入参数 输入参数不应该是&#39; nmapblob&#39; (实际数据)?
也有太多的引号。在INSERT之前只应该有一个引号,而在&nbsp;&nbsp;&nbsp;在最后一行。
cur.execute('INSERT INTO Results VALUES (?,?,?)', ('scan1','ip1',lite.Binary(nmapblob)))