为了账号安全,请及时绑定邮箱和手机立即绑定

Python 脚本 - mysql.connector 不更新 MariaDB 表

Python 脚本 - mysql.connector 不更新 MariaDB 表

繁华开满天机 2021-11-30 10:15:10
我一直试图弄清楚为什么我的 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 数据框的作者和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。任何帮助,将不胜感激。如果需要,我可以提供更多信息。谢谢!
查看完整描述

1 回答

?
慕沐林林

TA贡献2016条经验 获得超9个赞

问题出在这行代码中:

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

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

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

我不完全确定这是如何在不抛出任何错误的情况下工作的,但很高兴我终于弄明白了!


查看完整回答
反对 回复 2021-11-30
  • 1 回答
  • 0 关注
  • 142 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信