Advertisement
Guest User

Untitled

a guest
Nov 20th, 2019
144
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.31 KB | None | 0 0
  1. import sqlite3
  2. import pandas as pd
  3.  
  4. conn = sqlite3.connect("hod.db")
  5. cursor = conn.cursor()
  6.  
  7. res = pd.read_excel('resursy_RP_1_2.xlsx')
  8.  
  9. what_adds = {
  10. 'produced_Coal': 'coal',
  11. 'produced_Oil': 'oil',
  12. 'produced_Gas': 'gas',
  13. 'produced_Uranium': 'uranium',
  14. 'produced_Aluminum': 'aluminum',
  15. 'produced_Steel': 'steel',
  16. 'produced_PreciousMetals': 'preciousMetals',
  17. 'produced_PreciousStones': 'preciousStones',
  18. 'produced_Non_ferrousMetals': 'non_ferrousMetals',
  19. 'produced_Forest': 'forest',
  20. 'profit': 'money'
  21. }
  22.  
  23. try:
  24. print('Ищу нужную таблицу таблицы')
  25. cursor.execute("""CREATE TABLE all_country (country text,
  26. produced_Coal integer,
  27. produced_Oil integer,
  28. produced_Gas integer,
  29. produced_Uranium integer,
  30. produced_Aluminum integer,
  31. produced_Steel integer,
  32. produced_PreciousMetals integer,
  33. produced_PreciousStones integer,
  34. produced_Non_ferrousMetals integer,
  35. produced_Forest integer,
  36.  
  37. coal integer DEFAULT 0,
  38. oil integer DEFAULT 0,
  39. gas integer DEFAULT 0,
  40. uranium integer DEFAULT 0,
  41. aluminum integer DEFAULT 0,
  42. steel integer DEFAULT 0,
  43. preciousMetals integer DEFAULT 0,
  44. preciousStones integer DEFAULT 0,
  45. non_ferrousMetals integer DEFAULT 0,
  46. forest integer DEFAULT 0,
  47. money integer DEFAULT 0,
  48. stability integer DEFAULT 0,
  49. population integer DEFAULT 0,
  50. tax integer DEFAULT 0,
  51. profit integer DEFAULT 0)""")
  52. print('Новая таблица успешно созданна')
  53. except sqlite3.OperationalError:
  54. print('Таблица успешно обнаружена')
  55. # TODO добавить остальные постройки
  56.  
  57.  
  58. def filling_database():
  59. print('Начинаю заполнение базы данных')
  60. for _, line in res.iterrows():
  61. cursor.execute(f"""INSERT INTO all_country ("country","produced_Coal","produced_Oil","produced_Gas",
  62. "produced_Uranium","produced_Aluminum","produced_Steel","produced_PreciousMetals",
  63. "produced_PreciousStones","produced_Non_ferrousMetals","produced_Forest")
  64. VALUES ("{line['Страны']}", {line['Уголь']}, {line['Нефть']}, {line['Газ']}, {line['Уран']},
  65. {line['Алюм.']}, {line['Сталь']}, {line['Цен.М']}, {line['Цен.К']}, {line['Цвет.М']}, {line['Лес']})""")
  66. conn.commit()
  67. print('База данных успешно заполнена')
  68.  
  69.  
  70. def plus_minus_at_database(country, parameter, value):
  71. print(f'Устанавливаю стране {country}, параметр {parameter} больше на {str(value)}')
  72. sql = f"SELECT {parameter} FROM all_country WHERE country='{country}'"
  73. cursor.execute(sql)
  74. country_fetchone = cursor.fetchone()
  75.  
  76. sql = f"UPDATE all_country SET {parameter}={country_fetchone[0]+value} WHERE country='{country}'"
  77. cursor.execute(sql)
  78. conn.commit()
  79. print('Значение успешно изменено')
  80.  
  81.  
  82. def new_value(country, parameter, value):
  83. print(f'Устанавливаю стране {country}, параметр {parameter} равным {str(value)}')
  84. sql = f"UPDATE all_country SET {parameter}={value} WHERE country='{country}'"
  85. cursor.execute(sql)
  86. conn.commit()
  87. print('Значение успешно изменено')
  88.  
  89.  
  90. def profit_calculation_all():
  91. print('Начинаю расчёт прибыли для всех стран')
  92. for _, line in res.iterrows():
  93. print(f'Расчитываю прибыль для страны {line["Страны"]}')
  94. sql = f"""SELECT "produced_Coal","produced_Oil","produced_Gas",
  95. "produced_Uranium","produced_Aluminum","produced_Steel","produced_PreciousMetals",
  96. "produced_PreciousStones","produced_Non_ferrousMetals","produced_Forest" FROM all_country
  97. WHERE country='{line['Страны']}'"""
  98. cursor.execute(sql)
  99. loss = sum(cursor.fetchone()) * 10_000
  100.  
  101. sql=f"""SELECT "tax","population" FROM all_country WHERE country='{line['Страны']}'"""
  102. cursor.execute(sql)
  103. country_fetchone = cursor.fetchone()
  104. profit_tax = country_fetchone[0] * country_fetchone[1]
  105. sql = f"UPDATE all_country SET profit = {profit_tax - loss} WHERE country='{line['Страны']}'"
  106. cursor.execute(sql)
  107. conn.commit()
  108. print('Расчёт успешно окончен')
  109.  
  110.  
  111. def profit_calculation_one(country):
  112. print(f'Начинаю расчёт прибыли для страны {country}')
  113. sql = f"""SELECT "produced_Coal","produced_Oil","produced_Gas",
  114. "produced_Uranium","produced_Aluminum","produced_Steel","produced_PreciousMetals",
  115. "produced_PreciousStones","produced_Non_ferrousMetals","produced_Forest" FROM all_country
  116. WHERE country='{country}'"""
  117. cursor.execute(sql)
  118. loss = sum(cursor.fetchone()) * 10_000
  119. sql=f"SELECT tax, population FROM all_country WHERE country='{country}'"
  120. cursor.execute(sql)
  121. country_fetchone = cursor.fetchone()
  122. profit_tax = country_fetchone[0] * country_fetchone[1]
  123. sql = f"UPDATE all_country SET profit = {profit_tax - loss} WHERE country='{country}'"
  124. cursor.execute(sql)
  125. conn.commit()
  126. print('Расчёт успешно окончен')
  127.  
  128.  
  129. def new_hod():
  130. print('Начинаю расчёт на новый ход')
  131. for _, line in res.iterrows():
  132. print(f'Начинаю расчитывать для страны {line["Страны"]}')
  133. for key, value in what_adds.items():
  134. sql = f"SELECT {key}, {value} FROM all_country WHERE country='{line['Страны']}'"
  135. cursor.execute(sql)
  136. country_fetchone = cursor.fetchone()
  137. sql = f"UPDATE all_country SET {value}={country_fetchone[0]+country_fetchone[1]} WHERE country='{line['Страны']}'"
  138. cursor.execute(sql)
  139. conn.commit()
  140. print('Расчёт закончен для всех стран')
  141.  
  142. def one_report(country):
  143. sql = f"SELECT * FROM all_country WHERE country='{country}'"
  144. cursor.execute(sql)
  145. country_fetchone = cursor.fetchone()
  146. report = f"Стран - {country_fetchone[0]}\n\n"\
  147. f"Углеперерабатывающее предприятия - {country_fetchone[1]}\n"\
  148. f"Нефтеперерабатывающие предприятия - {country_fetchone[2]}\n"\
  149. f"Газоперерабатывающие предприятия - {country_fetchone[3]}\n"\
  150. f"Ураноперерабатывающие предприятия - {country_fetchone[4]}\n"\
  151. f"Алюминиеперерабатывающие предприятия - {country_fetchone[5]}\n"\
  152. f"Сталеперерабатывающие предприятия - {country_fetchone[6]}\n"\
  153. f"Цен.металлоперерабатывающие предприятия - {country_fetchone[7]}\n"\
  154. f"Цен. камнеперерабатывающие предприятия - {country_fetchone[8]}\n"\
  155. f"Цвет. металлоперерабатывающие предприятия - {country_fetchone[9]}\n"\
  156. f"Древообрабатывающие предприятия - {country_fetchone[10]}\n\n"\
  157. f"1. Бюджет {country_fetchone[21]}$\n"\
  158. f"2. Уголь {country_fetchone[11]}\n"\
  159. f"Нефть {country_fetchone[12]}\n"\
  160. f"Газ {country_fetchone[13]}\n"\
  161. f"Уран {country_fetchone[14]}\n"\
  162. f"Алюминий {country_fetchone[15]}\n"\
  163. f"Сталь {country_fetchone[16]}\n"\
  164. f"Цен. М {country_fetchone[17]}\n"\
  165. f"Цен. К {country_fetchone[18]}\n"\
  166. f"Цвет. М {country_fetchone[19]}\n"\
  167. f"Лес {country_fetchone[20]}\n"\
  168. f"3. Население {country_fetchone[22]} человек(а)\n"\
  169. f"4. Стабильность {country_fetchone[23]}\n"\
  170. f"Налог - {country_fetchone[24]}$\n\n"\
  171. f"Прибыль в ход {country_fetchone[25]}$\n"
  172. return report
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement