Python.Оптимизировать приложение DF к базе данных MySQL - PullRequest
0 голосов
/ 24 октября 2018

Я добавляю в БД вывод такой модели:

cursor = conn.cursor()
for i in range(len(df)):
    UserId = df.loc[i, 'UserId']
    Timestamp = df.loc[i, 'Timestamp']
    ChurnPropensity = df.loc[i, 'ChurnPropensity']

    sql = "INSERT INTO DB_Name (UserId, Timestamp, ChurnPropensity) VALUES ({},'{}',{});".format(UserId, Timestamp, ChurnPropensity)

    cursor.execute(sql)

conn.commit()

Однако, это занимает много времени из-за цикла for.Как бы вы улучшили время вычислений?

Salut,

1 Ответ

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

Попробуйте этот метод.В идеале это должно ускорить выполнение.

query = "INSERT INTO DB_Name (UserId, Timestamp, ChurnPropensity) VALUES ({},'{}',{});"
df.apply(lambda row: cursor.execute(query.format(row['UserId'], 
                                                 row['Timestamp'], 
                                                 row['ChurnPropensity'])),
axis=1)

По моему опыту, сам метод execute медленный, поэтому вы можете ускорить процесс, пытаясь выполнить несколько запросов одновременно.

query = "INSERT INTO DB_Name (UserId, Timestamp, ChurnPropensity) VALUES ({},'{}',{});"
queries_list = df.apply(lambda row: query.format(row['UserId'], 
                                            row['Timestamp'], 
                                            row['ChurnPropensity']),  axis=1).values.tolist()

queries = ' '.join(queries_list)
cursor.execute(queries, multi=True)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...