Сохранение переменной после запуска кода python для доступа к ней при повторном запуске кода - PullRequest
0 голосов
/ 28 января 2020

Я пытаюсь получить данные с сервера mysql, выполнить код, используя полученные данные, а затем вернуть данные sh в базу данных в разных столбцах. Мне удалось заставить все это работать, как видно из моего кода.

Однако новые строки будут постоянно добавляться в базу данных, и я не хочу загружать всю базу данных каждый раз. Я хочу, чтобы код запускался только на добавленных новых строках. Поэтому я пытаюсь сохранить student_id и каким-то образом извлечь его и начало кода.

Я пробовал разные методы и даже пробовал мариновать, но мне не повезло. Цель состоит в том, чтобы код выполнялся непрерывно на удаленном сервере, поэтому я был бы очень признателен, если бы кто-то смог мне помочь, поскольку это поможет мне выполнить мою задачу.

Примечание. Это только фиктивные данные и код, но в основном метод того, чего я пытаюсь достичь.

import mysql.connector
import numpy as np
import time
import pickle

filename = 'saved_id'
infile = open(filename,'rb')
st_id = pickle.load(infile)
print(number)

conn = mysql.connector.connect(user="user", password='password',
                               host="demo.mysql.database.azure.com", port=3306)

conn.autocommit = True

cursor = conn.cursor()

cursor.execute("USE testdb;")

while True:

   outfile = open(filename,'wb')

   cursor.execute(f"SELECT * FROM student WHERE student_id >= {st_id};")

   myresult = np.array(cursor.fetchall())

   print (myresult)

   for row in myresult:

      mark_1 = np.random.randint(0,100)
      mark_2 = np.random.randint(0,100)
      mark_3 = np.random.randint(0,100)

      iid = row[0]
      pickle.dump(iid,outfile)
      outfile.close()

      cursor.execute(f"UPDATE student SET grade_1 = {mark_1}, grade_2 = {mark_2}, grade_3 = {mark_3} WHERE student_id = {iid};")


time.sleep(5)

Думаю, проблема в том, что когда я запускаю код изначально, значение pickle не имеет ввода, и когда я пытаюсь использовать стандартный метод переменных, он не будет определен, что также приведет к некоторой ошибке.

Пожалуйста, дайте мне знать, если есть какие-то аспекты моего кода, которые можно улучшить для скорости, эффективности!

...