Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Как реструктурировать приведенные ниже данные JSON, которые представляют собой набор результатов SQL-запроса с использованием курсоров в python.

Автор вопроса: Yaswanth KumarОтветов: 1
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": "[email protected]",
    "firstname": "The"}]

что я хочу это

    {
    "email_address":"[email protected]",
    "status":"subscribed",
    'merge_fields': {
       'firstname': 'yash',
       'lastname': 'chakka',
     }

У меня нет столбца с именем поля слияния в базе данных, но я хочу, чтобы этот заголовок полей слияния для каждого идентификатора электронной почты с именем и фамилией под ним публиковал его в Mailchimp. какую модификацию мне нужно сделать, чтобы мой курсор получил желаемый результат. Любая помощь будет оценена. Спасибо!

  • Если вы используете SQL 2016, вы можете использовать FOR JSON и выполнить форматирование там. К сожалению, у меня нет опыта, чтобы помочь с аспектом Python. Ресурс, если вам интересно msdn.microsoft.com/en-us/library/ dn921882.aspx Xedni 01.02.2017
  • Спасибо за ссылку! к сожалению, я использую SQL Server 2012 Yaswanth Kumar 01.02.2017
  • Это вряд ли прямая замена, но это заставило меня задуматься, как вы можете это сделать. Ответ на этот вопрос показался мне похожим на то, что вы пытаетесь сделать. stackoverflow.com/questions/23255512/ Xedni 01.02.2017

sql-servercursors

Ответы

Ответ 1 · Yaswanth Kumar

 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

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы