sqlalchemy.exc.IntegrityError

sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely) (_mysql_exceptions.IntegrityError) (1062, "Duplicate entry '区块链:构建自己的加密货币' for key 'ix_course_name'") [SQL: 'INSERT INTO course (created_at, updated_at, name, author_id, description, image_url) VALUES (%s, %s, %s, %s, %s, %s)'] [parameters: (datetime.datetime(2018, 5, 16, 1, 58, 48, 206337), datetime.datetime(2018, 5, 16, 1, 58, 48, 206337), '区块链:构建自己的加密货币', 3, '本训练营以“构建自己的加密货币”为练习项目,选择非常主流的Ethereum(以太坊)作为区块链开发平台。让大家在不依赖框架的情况下,手动操作编译、部署等过程,更有利于理解开发流程及模块间交互。在完成项目的过程中,循序渐进地掌握区块链开发技能。', 'https://dn-simplecloud.shiyanlou.com/1507600436048.png')] (Background on this error at: http://sqlalche.me/e/gkpj)

这个问题反反复复出现,刚开始,我找不准错误出现在哪里,我以为是这一句:

sqlalchemy.exc.IntegrityError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely)

于是在网上找了半天资料,觉得可能是autoflush。我看到一些文章说应该设置为false。所以我改成了下面这样:

db = SQLAlchemy(session_options={"autoflush": False})

然后在shell里面运行,想往数据库里面插入数据,结果错误变成了这样:

sqlalchemy.exc.IntegrityError:  (1062, "Duplicate entry '区块链:构建自己的加密货币' for key 'ix_course_name'") [SQL: 'INSERT INTO course (created_at, updated_at, name, author_id, description, image_url) VALUES (%s, %s, %s, %s, %s, %s)'] [parameters: (datetime.datetime(2018, 5, 16, 1, 58, 48, 206337), datetime.datetime(2018, 5, 16, 1, 58, 48, 206337), '区块链:构建自己的加密货币', 3, '本训练营以“构建自己的加密货币”为练习项目,选择非常主流的Ethereum(以太坊)作为区块链开发平台。让大家在不依赖框架的情况下,手动操作编译、部署等过程,更有利于理解开发流程及模块间交互。在完成项目的过程中,循序渐进地掌握区块链开发技能。', 'https://dn-simplecloud.shiyanlou.com/1507600436048.png')] (Background on this error at: http://sqlalche.me/e/gkpj)

所以说不是autoflush的锅。然后我看到下面这一句,

“Duplicate entry ‘区块链:构建自己的加密货币’ for key ‘ix_course_name”
我觉得应该是重复插入了,因为我把name这个字段设置为unique,但是我否定了我的这个想法,因为我的数据是从一个网站上面爬下来的,那个网站上的数据就没有重复的。

ps:扒下来的数据类似于这样:

{"name": "\u533a\u5757\u94fe\uff1a\u6784\u5efa\u81ea\u5df1\u7684\u52a0\u5bc6\u8d27\u5e01", "description": "\u672c\u8bad\u7ec3\u8425\u4ee5\u201c\u6784\u5efa\u81ea\u5df1\u7684\u52a0\u5bc6\u8d27\u5e01\u201d\u4e3a\u7ec3\u4e60\u9879\u76ee\uff0c\u9009\u62e9\u975e\u5e38\u4e3b\u6d41\u7684Ethereum\uff08\u4ee5\u592a\u574a\uff09\u4f5c\u4e3a\u533a\u5757\u94fe\u5f00\u53d1\u5e73\u53f0\u3002\u8ba9\u5927\u5bb6\u5728\u4e0d\u4f9d\u8d56\u6846\u67b6\u7684\u60c5\u51b5\u4e0b\uff0c\u624b\u52a8\u64cd\u4f5c\u7f16\u8bd1\u3001\u90e8\u7f72\u7b49\u8fc7\u7a0b\uff0c\u66f4\u6709\u5229\u4e8e\u7406\u89e3\u5f00\u53d1\u6d41\u7a0b\u53ca\u6a21\u5757\u95f4\u4ea4\u4e92\u3002\u5728\u5b8c\u6210\u9879\u76ee\u7684\u8fc7\u7a0b\u4e2d\uff0c\u5faa\u5e8f\u6e10\u8fdb\u5730\u638c\u63e1\u533a\u5757\u94fe\u5f00\u53d1\u6280\u80fd\u3002", "image_url": "https://dn-simplecloud.shiyanlou.com/1507600436048.png"}

然后我不停地百度,并没有什么结果。最后心血来潮检查了一下数据,结果真的重复了。。。原来那个爬虫我运行了好几次。。。

后来把所有的数据删掉,重新执行了爬虫,再次把数据插入到数据库,这次没问题啦。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值