Python как мне автоматически генерировать несуществующий первичный ключ каждый раз, когда я вставляю новые данные - PullRequest
0 голосов
/ 19 октября 2019

У меня есть этот запрос SQL, но я должен менять идентификатор каждый раз, когда вставляю новые данные, потому что это первичный ключ. Как я могу добавить новое неиспользуемое значение первичного ключа при каждой вставке?

Я использую Microsoft SQL Server Studio

import urllib.request as urllib
import socket
import pyodbc
from datetime import datetime

#Timestamp for undersøgelse
timestamp = datetime.now().strftime('%Y-%m-%d %H:%M:%S')

#Host info og IP
host = "www.rejseplanen.dk"
dest = socket.gethostbyname(host)
hdata = 'host',host,'IP:',dest


#Responseheader request
request = urllib.Request('http://rejseplanen.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 local database
con = pyodbc.connect('Driver={SQL Server Native Client 11.0};'
                      'Server=DESKTOP-THV2IDL;'
                      'Database=host;'
                      'Trusted_Connection=yes;')

cursor = con.cursor()
cursor.execute('SELECT * FROM host.dbo.hosts')

for row in cursor:
    print(row)

con.execute('INSERT INTO host.dbo.hosts (Id, ip, host, HSTS, HPKP, XContentTypeOptions, XFrameOptions, ContentSecurityPolicy, Xssprotection, Server, Timestamp) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)', 
            (4123, 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-XSS-Protection'], rdata['Server'], timestamp))

con.commit()

1 Ответ

0 голосов
/ 19 октября 2019

Ты не. Вы позволяете базе данных делать это. Таким образом, таблица хоста должна быть определена как:

create table host (
    id int identity(1, 1) primary key,
    ip . . . 
);

Затем вы пропускаете значение из insert:

INSERT INTO host.dbo.hosts (ip, host, HSTS, HPKP, XContentTypeOptions, XFrameOptions, ContentSecurityPolicy, Xssprotection, Server, Timestamp)
    VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?);

(Обратите внимание, что id отсутствует всписок столбцов.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...