[英]Python Script - mysql.connector doesn't update MariaDB table
我一直試圖弄清楚為什么我的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()
我有一個作者的熊貓數據get_topics
,對每個作者都調用get_topics
,它調用insert_author_topics
,如下所示:
authors.apply(lambda x: get_topics(x, ldamodel, cursor, connection), axis=1)
我總共有大約100,000名作者。 由於某種原因,每當我運行此腳本時,數據庫中僅更新大約200位作者。
嘗試運行腳本時沒有出現任何錯誤。 我嘗試打印出每個使用sql語句更新的作者的ID,然后打印了大約100,000個ID。
任何幫助,將不勝感激。 如果需要,我可以提供更多信息。 謝謝!
問題出在以下代碼行中:
database.insert_author_topics(author['id'], topics, cursor)
如果您看一下我傳遞給函數的參數,實際上我應該一直這樣調用insert_author_topics
:
database.insert_author_topics(x['id'], topics, cursor)
我不完全確定這是如何工作的而不會拋出任何錯誤,但是很高興我終於弄清楚了!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.