Я некоторое время пытался выяснить, почему мой скрипт на python не обновляет мою базу данных.
У меня есть файл с именем database.py
, и вот как он выглядит:
import mysql.connector as mariadb
import globals
def connect():
mariadb_connection = mariadb.connect(user=globals.MY_USERNAME, password=globals.MY_PASSWORD, database='ellen')
return mariadb_connection
def insert_author_topics(author_id, topics, cursor):
sql = "UPDATE author SET topics = \'" + str(topics) + "\' WHERE id = " + str(author_id) + ";"
try:
cursor.execute(sql)
except mariadb.Error as error:
print("Error: {}".format(error))
def close(connection):
connection.commit()
connection.close()
В моем главном файле у меня есть функция, подобная этой:
def get_topics(x, ldamodel, cursor, connection):
author_text = x['processed_text']
bow_vector = dictionary.doc2bow([author_text])
topics = '['
for index, score in sorted(ldamodel[bow_vector], key=lambda tup: -1*tup[1]):
new_topic = "Score: {}\t Topic: {} ".format(score, ldamodel.print_topic(index, 5))
topics += new_topic
topics += ']'
database.insert_author_topics(author['id'], topics, cursor)
connection.commit()
У меня есть pandas dataframe авторов, и get_topics
, который вызывает insert_author_topics
, вызывается для каждого автора следующим образом:
authors.apply(lambda x: get_topics(x, ldamodel, cursor, connection), axis=1)
Всего у меня около 100 000 авторов.По какой-то причине, когда я запускаю этот скрипт, в базе данных обновляется только около 200 авторов.
Я не получаю никаких ошибок при попытке запустить скрипт.Я попытался распечатать идентификатор каждого автора, который обновляется с помощью оператора SQL, и я распечатал около 100 000 идентификаторов.
Любая помощь будет оценена.Я могу предоставить больше информации, если это необходимо.Спасибо!