繁体   English   中英

Python SQLite3 SELECT 结果在向量数组中

[英]Python SQLite3 SELECT results in vector array

在从数据库检索数据期间,我的数据从标量数组转换为向量数组,位于以下代码之间:

def analysis():
labels = ["Appearance", "Hygiene", "Staff", "Quality", "Value", "Overall"]
survey_mean = []
industry_mean = []
conn = sqlite3.connect('mysteryshopper.db')
c = conn.cursor()
avg1 = c.execute ("""SELECT avg(appearance) FROM survey WHERE storeid = 1 """)
avg1s = c.fetchall()
print (avg1s)
avg2 = c.execute ("""SELECT avg(hygiene) FROM survey WHERE storeid = 1 """)
avg2s = c.fetchall()
avg3 = c.execute ("""SELECT avg(staff) FROM survey WHERE storeid = 1 """)
avg3s = c.fetchall()
avg4 = c.execute ("""SELECT avg(quality) FROM survey WHERE storeid = 1 """)
avg4s = c.fetchall()
avg5 = c.execute ("""SELECT avg(value) FROM survey WHERE storeid = 1 """)
avg5s = c.fetchall()
avg6 = c.execute ("""SELECT avg(overall) FROM survey WHERE storeid = 1 """)
avg6s = c.fetchall()
parameter_survey = [avg1s, avg2s, avg3s, avg4s, avg5s, avg6s]
survey_mean.append(parameter_survey)
print (survey_mean)

原始数据在插入数据库之前的格式为“(3.9)”。

测试上面的 avg1s 输出“(3.9,)”,在数组中添加一个逗号似乎无处不在,这会导致我的 matplotlib 任务出现进一步的问题。

在 sql 可以返回的内容中,没有任何东西可以作为向量数组。 但是fetchall返回一个行列表,并且一行是一个可迭代的字段值(默认情况下是一个元组或一个列表)。

你想要的是:

avg1 = c.execute ("""SELECT avg(appearance) FROM survey WHERE storeid = 1 """)
avg1s = [row[0] for row in avg1s]

(因为游标直接是可迭代的行)

考虑使用fetchone因为平均值返回一行,甚至将所有查询合并为一个。 然后,将结果解包以分离变量或将游标提取转换为列表:

sql = """SELECT avg(appearance) AS avg_appearance,
                avg(hygiene) AS avg_hygiene,
                avg(staff) AS avg_staff,
                avg(quality) AS avg_quality,
                avg(value) AS avg_value,
                avg(overall) AS avg_overall
         FROM survey 
         WHERE storeid = 1
      """

c.execute(sql)
avg1s, avg2s, avg3s, avg4s, avg5s, avg6s = c.fetchone()

parameter_survey = [avg1s, avg2s, avg3s, avg4s, avg5s, avg6s]
# parameter_survey = list(c.fetchone())  # ALTERNATIVE
survey_mean.append(parameter_survey)
print(survey_mean)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM