在Django中更新postgresql数据库列

时间:2015-08-18 16:55:48

标签: python arrays django postgresql

我正在尝试将数据保存到PostgreSql数据库中的2D数组中,数据存储如下:

"[('User 1', 'User 2', 'User3', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '')]"

这表示数据库的单个列中的单个数组,此数据通过以下Python代码访问,该代码请求数据库中的正确行,然后是相关列

q = DBReports.objects.all().filter(name__contains = username)  
q = q.values_list(columnName)

为了遍历检索到的数据,然后将其放入列表

 users_list = ast.literal_eval(q[0][0])

然后使用以下代码选择列中的正确数组:

 for list in users_list:
                if user in list[2]:
                    listToUse = list

我遇到的问题是,现在使用检索到的数据,我需要更改它并重新保存到数据库(listToUse随着填充的空格而改变),这样数组现在可以代表

"[('User 1', 'User 2', 'User3', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15', '16', '17', '19')]"

我如何更新存储在数组中的数据,或者用新创建的相同结构列表替换数组,我使用django的数据库抽象来处理所有数据

1 个答案:

答案 0 :(得分:0)

这是通过从返回的查询集中获取所有信息,将其存储在变量/列表中,使用所需信息更新这些变量,然后将其保存到数据库中来解决的。

请求信息:

q = DBReports.objects.all().filter(name__contains = assessor)  
qValues = q.values_list(columnName)

if len(qValues) > 0:
            users_list = ast.literal_eval(qValues[0][0])

            usernameToAppend = q[0].username
            nameToAppend = q[0].name
            mn= users_list[0][1]
            EOS= q[0].EOS
            RW= q[0].RW
            temp = (assessor, mn, assessee, '','','','','','','','','','','','','','','','','','')
            users_list.append(temp)
            recordToAppend = DBReports(username = usernameToAppend,name = nameToAppend, RW = users_list, EOS = evaluationsOfSelf, RW = RW)