簡體   English   中英

Python腳本-mysql.connector不會更新MariaDB表

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM