【问题标题】:for abc in cursor: NameError: name 'cursor' is not defined (data migration)for abc in cursor: NameError: name 'cursor' is not defined(数据迁移)
【发布时间】:2023-03-20 03:43:02
【问题描述】:

我正在尝试将我的数据从 MongoDB 迁移到 Mysql,并且我的数据有超过 100 万条记录。 我为此使用了 Studio 3T,但它将记录限制为 1000 条记录(我们没有购买高级版本的预算)。因此,我尝试在这篇文章之后使用 python:“http://www.youngdba.com/2017/03/migrating-mongodb-data-to-mysql-using.html”。

一切都很顺利,直到python shell返回错误的最后一部分:

cursor1= db.cursor()
 i=1
 for abc in cursor:
    uids=int(abc.get("uids"))
    fnames=abc.get("first_name")
    sql= "insert into client_test(uid,first_name) values"+'('+str(uids)+",'"+fnames+"')"
    print ("Inserted"+str(i)+" record")
    i+=1
    Number_of_rows=cursor1.execute(sql)

回溯(最近一次通话最后一次): 文件“”,第 1 行,在 对于光标中的 abc: NameError: name 'cursor' is not defined

为什么代码不起作用?我在这里错过了什么吗? 请帮忙!提前谢谢!

【问题讨论】:

  • 我相信你应该使用cursor1 而不是for abc in cursor

标签: python mysql sql mongodb database-migration


【解决方案1】:

你的 for 循环应该是:

for abc in cursor1:

没有名为 cursor 的变量,只有 cursor1。您缺少变量名中的 1。

【讨论】:

  • 照你说的做了。但是,它返回另一个错误:Traceback(最近一次调用最后一次):文件“”,第 1 行,在 中为 cursor1 中的 abc:文件“C:\Users\dk\AppData\ Local\Programs\Python\Python39\lib\site-packages\MySQLdb\cursors.py”,第 406 行,在 _iter_ self._check_executed() 文件“C:\Users\dk\AppData\Local \Programs\Python\Python39\lib\site-packages\MySQLdb\cursors.py",第 126 行,在 _check_executed 中引发 ProgrammingError("execute() first") MySQLdb._exceptions.ProgrammingError: execute() first这意味着代码首先不正确?
  • 这个新错误超出了本文的范围。创建另一个更详细的,也许解释你正在使用的模块,等等。这篇文章中问题的答案在上面,所以将它标记为已回答并在此处评论你的新帖子的链接,我会尽我所能帮助解决这个其他错误。
  • 我会这样做的。谢谢您,祝您今天愉快!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-12-02
  • 2013-04-09
  • 1970-01-01
  • 1970-01-01
  • 2020-11-07
  • 2017-01-09
相关资源
最近更新 更多