我在Python腳本中有2個函數。Python3將數據庫查詢的結果轉換爲單個字符串
第一個使用WHERE子句從數據庫獲取數據,但第二個函數使用此數據並遍歷結果以下載文件。
我可以打印結果作爲元組?
[('mmpc',), ('vmware',), ('centos',), ('redhat',), ('postgresql',), ('drupal',)]
但我需要通過每個元素作爲一個字符串迭代所以下載功能,可以將其追加到的URL response
變量
這裏是其中所包含的功能下載腳本代碼: -
import requests
import eventlet
import os
import sqlite3
# declare the global variable
active_vuln_type = None
# Get the active vulnerability sets
def GetActiveVulnSets() :
# make the variable global
global active_vuln_type
active_vuln_type = con = sqlite3.connect('data/vuln_sets.db')
cur = con.cursor()
cur.execute('''SELECT vulntype FROM vuln_sets WHERE active=1''')
active_vuln_type = cur.fetchall()
print(active_vuln_type)
return(active_vuln_type)
# return str(active_vuln_type)
def ExportList():
vulnlist = list(active_vuln_type)
activevulnlist = ""
for i in vulnlist:
activevulnlist = str(i)
basepath = os.path.dirname(__file__)
filepath = os.path.abspath(os.path.join(basepath, ".."))
response = requests.get('https://vulners.com/api/v3/archive/collection/?type=' + activevulnlist)
with open(filepath + '/vuln_files/' + activevulnlist + '.zip', 'wb') as f:
f.write(response.content)
f.close()
return activevulnlist + " - " + str(os.path.getsize(filepath + '/vuln_files/' + activevulnlist + '.zip'))
目前,它創建了一個腐敗的.ZIP爲('mmpc',).zip
所以它不是將mmpc.zip的第一個實際的文件,但它似乎並沒有通過無論是作爲它僅創建列表中迭代來自DB的第一個結果的zip文件,而不是其他任何其他文件,但是print(i)
返回[('mmpc',), ('vmware',), ('centos',), ('redhat',), ('postgresql',), ('drupal',)]
腳本認爲它沒有任何回溯。
用'active_vuln_type = [x [0] for x in cur]''替換'active_vuln_type = cur.fetchall()'? – Abdou
我還沒有想過要在這個級別循環 - 大腦放屁的時刻!我會給它一個旋轉! – Luke
這樣就可以正確地得到第一個結果,但它不會迭代並獲得結果的其餘部分 – Luke