【发布时间】:2019-10-18 19:56:39
【问题描述】:
我无法理解为什么 conn.commit 在我尝试插入数据时会吐出无效的语法。
import urllib.request as urllib
import socket
import pyodbc
#ip fra host
host = "www.skat.dk"
dest = socket.gethostbyname(host)
hdata = 'host',host,'IP:',dest
#Responseheader fra en domæne
request = urllib.Request('http://skat.dk')
request.add_header('User-Agent', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36
(KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36')
response = urllib.urlopen(request)
rdata = response.info()
#SQL Connection til localhost microsoft sql server
conn = pyodbc.connect('Driver={SQL Server Native Client 11.0};'
'Server=DESKTOP-THV2IDL;'
'Database=host;'
'Trusted_Connection=yes;')
cursor = conn.cursor()
cursor.execute('SELECT * FROM host.dbo.hosts')
#Insert values
cursor.execute("""
INSERT INTO host.dbo.hosts
(Id, host, ip, HSTS, HPKP, XContentTypeOptions, XFrameOptions, ContentSecurityPolicy)
VALUES (?, ?, ?, ?, ?, ?, ?, ?)
""",
(49, host, dest, rdata['Strict-Transport-Security'], rdata['Public-Key-Pins'],
rdata['X-Content-Type-Options'], rdata['X-Frame-Options'], rdata['Content-Security-Policy'],
rdata['X-Frame-Options'])
conn.commit():
SyntaxError: 无效语法 PS C:\Users\Farzad\Desktop\Python> & C:/Users/Farzad/AppData/Local/Programs/Python/Python37- 32/python.exe c:/Users/Farzad/Desktop/Python/Webscraping/Responseheaderinfo.py 文件“c:/Users/Farzad/Desktop/Python/Webscraping/Responseheaderinfo.py”, 第 47 行 conn.commit(): ^
【问题讨论】:
-
你写了
: -
我还注意到,当查询中只考虑 8 个值时,您提供了 9 个值。
rdata['X-Frame-Options']似乎在您的执行调用结束时重复。 -
我删除了 : 并添加了另一个值,删除了查询中的重复项,但仍然出现相同的语法错误。
标签: python sql web-scraping