我基本上有一个test2文件,其中包含要使用的域信息,因此我剥离了其他内容,仅将域名作为new_list。
我想做的就是用这些域名查询数据库,提取名称和严重性得分,然后(我确实很难受的那一部分)得到一个可以存储的列表(或元组)由拉网域和严重性得分组成的使用。
这是一个供参考的psql数据库,但我的问题更多在于查询后的管理。
我仍然对Python真的很陌生,主要是做了一点Java,所以我的代码可能看起来很糟糕,但是我尝试了转换为字符串并尝试将其追加到列表的末尾,但是我大部分都做不到它。
def get_new():
data = []
with open('test2.txt', 'r') as file:
data = [line.rstrip('\n') for line in open('test2.txt')]
return data
new_list = get_new()
def db_query():
cur = connect.cursor()
query ="SELECT name, de.severity_score FROM domains d JOIN ips i ON i.domain_id = d.id JOIN domains_extended de ON de.domain_id = d.id WHERE name = '"
for x in new_list:
var = query + x + "'"
cur.execute(var)
get = cur.fetchall()
# STORE THE LOOPED QUERIES INTO A VARIABLE OF SOME KIND (problem area)
print(results)
cur.close()
connect.close()
db_query()
快乐的地方:从文件中获取域名,使用这些域名作为查询参数的一部分来获取相关的严重性评分,然后将其存储到某种变量中,以便以后可以使用这些值(在循环或一些逻辑)。
我已经尝试了所有可能想到的事情,并且遇到了错误,因为它是我要存储的查询,列表无法合并等。
答案 0 :(得分:0)
首先,在代码中,您将在每个循环中重置get变量。因此,通过在循环上方初始化get = []
来解决此问题,然后在循环中添加get.extend(cur.fetchall())
而不是当前语句。然后,您可以执行类似domainNames = [row[0] for row in get]
的操作。如果可以正确获取get,尽管从中获取值应该没问题。
答案 1 :(得分:0)
我将确保您的get_new()函数返回该文件中的期望值。只需迭代您的new_data列表即可。
您的db_query()函数中没有对结果的引用(也许像new_data []一样是全局的),但尝试在for循环中打印查询结果,即 Stream resourceStream = new MemoryStream();
// Droid.MainActivity activity = Forms.Context as Droid.MainActivity;
var activity = Android.App.Application.Context as Activity;
int resId = activity.Resources.GetIdentifier("Datamatrix", "drawable", "com.companyname.UDOSE");
resourceStream = activity.Resources.OpenRawResource(resId);
var leadStream = LeadStream.Factory.FromStream(resourceStream);
await ReadBarcode(leadStream);
并看看结果如何。如果可行,则可以创建一个列表以附加到该列表。