sqlalchemy только записал данные первого ряда - PullRequest
0 голосов
/ 03 марта 2020

Это функция в flask.

Я загрузил 3 строки данных, только первая строка может отображать числа. Данные Excel:

enter image description here

Загруженные данные:

enter image description here

Функция Реализована загрузка данных из Excel в базу данных. Следующий код может записывать только первую строку данных в базу данных.

код:

@classmethod
def GetTaskA(self, path):
    try:
        df = pd.read_excel(path, header=0,
                           names=current_app.config['EXECL_A_INDEX'])
        df.drop([0], inplace=True)
        df.fillna(" ", inplace=True)
        for i in range(len(df)):
            form_data = {'a': str(df[i:i + 1]['a'].values[0]),
                         'b': str(df[i:i + 1]['b'].values[0]),
                         'c': str(df[i:i + 1]['no'].values[0]),
                         'd': str(df[i:i + 1]['d'].values[0]),
                         'e': str(df[i:i + 1]['e'].values[0]),
                         'f': str(df[i:i + 1]['f'].values[0]),
                         'g': str(df[i:i + 1]['g'].values[0]),
                         'h': str(df[i:i + 1]['h'].values[0]),
                         'i': str(df[i:i + 1]['i'].values[0]),
                         'j': str(df[i:i + 1]['j'].values[0]),
                         'k': str(df[i:i + 1]['k'].values[0]),
                         'l': str(df[i:i + 1]['l'].values[0]),
                         'm': str(df[i:i + 1]['m'].values[0]),
                         'n': str(df[i:i + 1]['n'].values[0]),
                         'o': str(df[i:i + 1]['o'].values[0]),
                         'p': str(df[i:i + 1]['p'].values[0]),
                         'q': str(df[i:i + 1]['q'].values[0]),
                         'r': str(df[i:i + 1]['r'].values[0]),
                         's': str(df[i:i + 1]['s'].values[0]),
                         't': str(df[i:i + 1]['t'].values[0]),
                         'u': str(df[i:i + 1]['u'].values[0]),
                         'v': str(df[i:i + 1]['v'].values[0]),
                         'w': str(df[i:i + 1]['w'].values[0]),
                         'x': str(df[i:i + 1]['x'].values[0]),
                         'y': str(df[i:i + 1]['y'].values[0]),
                         'z': str(df[i:i + 1]['z'].values[0]),
                         'aa': datetime.now()}

            with db.auto_commit():
                DataA.query.filter_by(c=str(df[i:i + 1]['no'].values[0])).update(form_data)
            return True
    except Exception as e:
        print({"code": "error", "message": "{}".format(e)})
        return False

Новые данные должны отображаться в соответствии с c ['no'] field

Надеюсь, это поможет изменить этот код.

...