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

Python 抓取数据

Python 抓取数据

HUX布斯 2023-06-27 14:08:54
有以下代码。执行起来非常容易,唯一的问题是,我一次输入了11次。因此,当我执行此代码时,它将内容复制到数据库中 11 次。row 1row 2row 3 ...row 11这就是我尝试输出的内容:{    'note': '',    'money': 76682.1200000005,    'main': True,    'deleted': False,    '_id': '5e3e2bc4667b8d5fc053e9a1',    'ownerCharacter':         {            '_id': '5e3ddb08667b8d5fc052903d',            'name': 'Name'        },     'bank':         {            '_id': '5b36b968614626df322e5b75',            'imageUrl': 'urlToIMG',            'name': 'Savings Bank Paleto Bay'        },     'bankAccountType':         {            'type': 'private',            'title': '',            'interestRate': 0.01,            '_id': '5b36b968614626df322e5b76',            'name': 'Giro-Konto',            'bank': '5b36b968614626df322e5b75',            '__v': 0        },     'vban': '460907',     'pin': '1234',     '__v': 0}这是代码:def getData():    databaseConn = dbConnect()    cursor = databaseConn.cursor()    delete = "TRUNCATE TABLE bank"    try:        cursor.execute(delete)        databaseConn.commit()    except:        print("Delete error")    money = json.loads(makeRequest("URL",  authToken, True).text)        for amount in money:                geld = str(money["money"])        person = money["ownerCharacter"]["name"]        sql = "INSERT INTO bank (menge,name) VALUES (%s,%s)"        val = (geld,person)        try:            cursor.execute(sql, val)            databaseConn.commit()        except:            print("Error Database")    dbClose(databaseConn, cursor)我只需要输出一次,而不是连续 11 次。我究竟做错了什么?
查看完整描述

2 回答

?
收到一只叮咚

TA贡献1821条经验 获得超4个赞

您正在为“money”字典中的每个元素插入,因为它处于循环中。您需要在同一个 json 文件中循环多个帐户吗?如果不是,则不需要循环


def getData():

    databaseConn = dbConnect()

    cursor = databaseConn.cursor()


    delete = "TRUNCATE TABLE bank"

    try:

        cursor.execute(delete)

        databaseConn.commit()

    except:

        print("Delete error")


    money = json.loads(makeRequest("URL",  authToken, True).text)

    

        

    geld = str(money["money"])

    person = money["ownerCharacter"]["name"]


    sql = "INSERT INTO bank (menge,name) VALUES (%s,%s)"

    val = (geld,person)

    try:

        cursor.execute(sql, val)

        databaseConn.commit()

    except:

        print("Error Database")

    dbClose(databaseConn, cursor)


查看完整回答
反对 回复 2023-06-27
?
智慧大石

TA贡献1946条经验 获得超3个赞

这就是问题所在

for amount in money:

您正在迭代字典键。看起来你的字典里有 11 个键。这意味着您正在执行此操作

geld = str(money["money"])

11次。这就是您将其插入数据库 11 次的原因。

不要执行 for 循环。只需访问一次即可插入

geld = str(money["money"])


查看完整回答
反对 回复 2023-06-27
  • 2 回答
  • 0 关注
  • 99 浏览
慕课专栏
更多

添加回答

举报

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