【问题标题】:Python Script - mysql.connector doesn't update MariaDB tablePython 脚本 - mysql.connector 不更新 MariaDB 表
【发布时间】:2019-03-08 03:05:25
【问题描述】:

我一直试图弄清楚为什么我的 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,它调用insert_author_topics,每个作者都像这样调用:

authors.apply(lambda x: get_topics(x, ldamodel, cursor, connection), axis=1)

我总共有大约 100,000 位作者。出于某种原因,每当我运行此脚本时,数据库中只会更新大约 200 位作者。

我在尝试运行脚本时没有收到任何错误。我尝试打印出使用 sql 语句更新的每个作者的 ID,并且打印出大约 100,000 个 ID。

任何帮助将不胜感激。如果需要,我可以提供更多信息。谢谢!

【问题讨论】:

  • 显示拼接后的 SQL 查询。另外,SHOW CREATE TABLE.

标签: python mysql pandas connection mariadb


【解决方案1】:

问题出在这行代码中:

database.insert_author_topics(author['id'], topics, cursor)

如果您查看我传递给函数的参数,我实际上应该像这样调用insert_author_topics

database.insert_author_topics(x['id'], topics, cursor)

我不完全确定这是如何工作而没有抛出任何错误,但很高兴我终于弄明白了!

【讨论】:

    猜你喜欢
    • 2021-03-11
    • 2022-01-12
    • 1970-01-01
    • 1970-01-01
    • 2016-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-07
    相关资源
    最近更新 更多