Как сохранить значение словаря в базу данных MySQL tkinter python? - PullRequest
0 голосов
/ 05 октября 2018

Я хочу сохранить значение, сохраненное в словаре, в базу данных MySQL из графического интерфейса пользователя tkinter. Словарь значений выглядит следующим образом.В настоящее время я использую оператор if else для каждой длины, которая очень длинная.

db=storage.connect()
cursor=db.cursor()
sd1={'AWB Fees': ('122', 'Rupees', '1', '34', '4', '136.00', '8', '10.88'), 
    'Agency Charges': ('122', 'Rupees', '1', '78', '4', '312.00', '8', 
    '24.96'),'AWB': ('122', 'Rupees', '1', '34', '4', '136.00', '8', 
    '10.88')}
length=len(sd1)

y = (sd1.keys())

if (length==1):
    za = ((tuple(y))[0])
    xa = ((sd1[za])[0])
    xb = ((sd1[za])[1])
    xc = ((sd1[za])[2])
    xd = ((sd1[za])[3])
    xf = ((sd1[za])[4])
    xg = ((sd1[za])[5])
    xh = ((sd1[za])[6])
    xi = ((sd1[za])[7])
    cursor.execute(
            "INSERT INTO sea_exp_tra_raiselocal_inv_fright_est 
            (rlcn_id,billing_head, sac, currency, ex_rate, rate, value, 
            amount, gst, gst_amnt) VALUES (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)",
            (sepmId,za,xa,xb,xc,xd,xf,xg,xh,xi))
else:
    pass
db.commit()
db.close()

1 Ответ

0 голосов
/ 05 октября 2018

Вы действительно усложняете вещи.Сначала давайте очистим код:

sd1 = {
  'AWB Fees': ('122', 'Rupees', '1', '34', '4', '136.00', '8', '10.88'), 
  'Agency Charges': ('122', 'Rupees', '1', '78', '4', '312.00', '8', '24.96'),
  'AWB': ('122', 'Rupees', '1', '34', '4', '136.00', '8', '10.88')
  }

sql = """
  INSERT INTO sea_exp_tra_raiselocal_inv_fright_est 
  (rlcn_id,billing_head, sac, currency, ex_rate, rate, value, amount, gst, gst_amnt) 
  VALUES (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)
"""

key = list(d.keys())[0]    
values = (sepmId, key,) + sd1[key]
cursor.execute(sql, values)

Теперь все, что вам нужно сделать, это перебрать sd1.items() (что дает ключ, пары значений):

sd1 = {
  'AWB Fees': ('122', 'Rupees', '1', '34', '4', '136.00', '8', '10.88'), 
  'Agency Charges': ('122', 'Rupees', '1', '78', '4', '312.00', '8', '24.96'),
  'AWB': ('122', 'Rupees', '1', '34', '4', '136.00', '8', '10.88')
  }

sql = """
  INSERT INTO sea_exp_tra_raiselocal_inv_fright_est 
  (rlcn_id,billing_head, sac, currency, ex_rate, rate, value, amount, gst, gst_amnt) 
  VALUES (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)
"""

for key, val in sd1.items():    
    values = (sepmId, key,) + val
    cursor.execute(sql, values)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...