Prima di tutto, non costruire mai query SQL grezze del genere. Mai e poi mai. A questo servono le query parametrizzate. Hai richiesto un SQL injection attacco.
Se vuoi archiviare dati arbitrari, come ad esempio i dizionari Python, dovresti serializzare quei dati. JSON sarebbe una buona scelta per il formato.
Nel complesso il tuo codice dovrebbe apparire così:
import MySQLdb
import json
db = MySQLdb.connect(...)
cursor = db.cursor()
dic = {'office': {'component_office': ['Word2010SP0', 'PowerPoint2010SP0']}}
sql = "INSERT INTO ep_soft(ip_address, soft_data) VALUES (%s, %s)"
cursor.execute(sql, ("192.xxx.xx.xx", json.dumps(dic)))
cursor.commit()