将文件中的文本从DB_query转换为元组或列表,并获取两者之间的区别

时间:2019-06-24 22:01:30

标签: python

我基本上有一个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()

快乐的地方:从文件中获取域名,使用这些域名作为查询参数的一部分来获取相关的严重性评分,然后将其存储到某种变量中,以便以后可以使用这些值(在循环或一些逻辑)。

我已经尝试了所有可能想到的事情,并且遇到了错误,因为它是我要存储的查询,列表无法合并等。

2 个答案:

答案 0 :(得分:0)

首先,在代码中,您将在每个循环中重置get变量。因此,通过在循环上方初始化get = []来解决此问题,然后在循环中添加get.extend(cur.fetchall())而不是当前语句。然后,您可以执行类似domainNames = [row[0] for row in get]的操作。如果可以正确获取get,尽管从中获取值应该没问题。

答案 1 :(得分:0)

  1. 我将确保您的get_new()函数返回该文件中的期望值。只需迭代您的new_data列表即可。

  2. 您的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); 并看看结果如何。如果可行,则可以创建一个列表以附加到该列表。