如何 re-structure 下面的 JSON 数据是 SQL 在 python 中使用游标查询的结果集
How to re-structure the below JSON data which is a result set of SQL query using cursors in python
def query_db(query, args=(), one=False):
cur = connection.cursor()
cur.execute(query, args)
r = [dict((cur.description[i][0], value)
for i, value in enumerate(row)) for row in cur.fetchall()]
cur.connection.close()
return (r[0] if r else None) if one else r
my_query = query_db("select top 1 email as email_address,status = 'subscribed',firstname,lasstname from users")
json_output = json.dumps(my_query)
print json_output
结果是这样的:
[{
"status": "subscribed",
"lastname": "Engineer",
"email": "theengineer@yahoo.com",
"firstname": "The"}]
我要的就是这个
{
"email_address":"yash@yahoo.com",
"status":"subscribed",
'merge_fields': {
'firstname': 'yash',
'lastname': 'chakka',
}
我在数据库中没有任何名为 merge-fields 的列,但是,我想要这个 merge-fields header 用于每个 email-id 下的名字和姓氏post 到 Mailchimp。我必须对光标进行哪些修改才能获得所需的输出。任何帮助将不胜感激。谢谢!
I'm adding this so that future users of mailchimp API version3 can get an idea of how I achieved this.
这就是我所做的我添加了另一个接受值的函数换句话说我捕获了所有由 myquery 产生的值并将其传递给下面的函数
def get_users_mc_format(query):
users = query_db(query)
new_list = []
for user in users:
new_list.append({
"email_address": user["email"],
"status": user["status"],
"merge_fields": {
"FNAME": user["firstname"],
"LNAME": user["lastname"],
},
"interests": {
"1b0896641e": bool(user["hardware"]),
}
})
return new_list
def query_db(query, args=(), one=False):
cur = connection.cursor()
cur.execute(query, args)
r = [dict((cur.description[i][0], value)
for i, value in enumerate(row)) for row in cur.fetchall()]
cur.connection.close()
return (r[0] if r else None) if one else r
my_query = query_db("select top 1 email as email_address,status = 'subscribed',firstname,lasstname from users")
json_output = json.dumps(my_query)
print json_output
结果是这样的:
[{
"status": "subscribed",
"lastname": "Engineer",
"email": "theengineer@yahoo.com",
"firstname": "The"}]
我要的就是这个
{
"email_address":"yash@yahoo.com",
"status":"subscribed",
'merge_fields': {
'firstname': 'yash',
'lastname': 'chakka',
}
我在数据库中没有任何名为 merge-fields 的列,但是,我想要这个 merge-fields header 用于每个 email-id 下的名字和姓氏post 到 Mailchimp。我必须对光标进行哪些修改才能获得所需的输出。任何帮助将不胜感激。谢谢!
I'm adding this so that future users of mailchimp API version3 can get an idea of how I achieved this.
这就是我所做的我添加了另一个接受值的函数换句话说我捕获了所有由 myquery 产生的值并将其传递给下面的函数
def get_users_mc_format(query):
users = query_db(query)
new_list = []
for user in users:
new_list.append({
"email_address": user["email"],
"status": user["status"],
"merge_fields": {
"FNAME": user["firstname"],
"LNAME": user["lastname"],
},
"interests": {
"1b0896641e": bool(user["hardware"]),
}
})
return new_list