Home Database Mysql Tutorial Python + SQLAlchemy + MySQL出现IntegrityError, Duplicate ent

Python + SQLAlchemy + MySQL出现IntegrityError, Duplicate ent

Jun 07, 2016 pm 03:41 PM
int mysql python sqlalchemy Appear

今天用SQLAlchemy更新数据库的时候遇到一个Error: Firebug: WebError Traceback: ? IntegrityError: (IntegrityError) (1062, Duplicate entry '14-0' for key 'idx_sid_view') 'INSERT INTO template (schema_id, view, template, update_time) VALUES (%s

今天用SQLAlchemy更新数据库的时候遇到一个Error:

Firebug:

WebError Traceback:
? IntegrityError: (IntegrityError) (1062, "Duplicate entry '14-0' for key 'idx_sid_view'") 'INSERT INTO template (schema_id, view, template, update_time) VALUES (%s, %s, %s, %s)' (14, 0, 'this is a new view message.', None) 

Log:

17:21:55,461 INFO  [sqlalchemy.engine.base.Engine] [worker 5]BEGIN (implicit)
17:21:55,461 INFO  [sqlalchemy.engine.base.Engine] [worker 5] INSERT INTO template (schema_id, view, template, update_time) VALUES (%s, %s, %s, %s)
17:21:55,461 INFO  [sqlalchemy.engine.base.Engine] [worker 5] (14, 0, 'this is a new view message.', None)
17:21:55,463 INFO  [sqlalchemy.engine.base.Engine] [worker 5] ROLLBACK

由于是更新数据库,所以在Python里面是这样写的:

Session.merge(newtpl)

Session.commit()

Python + SQLAlchemy + MySQL出现IntegrityError, Duplicate ent

怎么找都不知道哪里错了。。。

后来后来仔细想了想,然后去看了下表结构才想明白。原来是这样。

表结构是这样的,

Python + SQLAlchemy + MySQL出现IntegrityError, Duplicate ent

我在更新的时候直插入了schema_id, view, template这3个字段,但是作为主键的id字段没有更新,所以出现了上面的错误。

然后改正就简单了。

把原始表里面的数据的id读出来,更新的时候把id放在要更新的字段,这样就OK了。

类似于下图这样:

Python + SQLAlchemy + MySQL出现IntegrityError, Duplicate ent

现在就成功了,再看看log:

17:52:36,729 INFO  [sqlalchemy.engine.base.Engine] [worker 2] BEGIN (implicit)
17:52:36,730 INFO  [sqlalchemy.engine.base.Engine] [worker 2] SELECT template.id AS template_id, template.schema_id AS template_schema_id, template.view AS template_view, template.template AS template_template, template.update_time AS template_update_time 
FROM template 
WHERE template.schema_id = %s AND template.view = %s 
 LIMIT %s
17:52:36,730 INFO  [sqlalchemy.engine.base.Engine] [worker 2] (14, 0, 1)
17:52:36,732 INFO  [sqlalchemy.engine.base.Engine] [worker 2] UPDATE template SET template=%s WHERE template.id = %s
17:52:36,732 INFO  [sqlalchemy.engine.base.Engine] [worker 2] ('ffffff, this is a merge test.again', 14949L)
17:52:36,734 INFO  [sqlalchemy.engine.base.Engine] [worker 2] COMMIT

一些有用的东西:

1、merge的使用:数据库表中存在此记录,主要是用来更新数据表的某个记录。即将表中的数据与源表对比,如果存在记录,则根据源表中的值更新目标表中的数据,如果不存在的话,则新增入目标表中。通过MERGE语句,根据一张表或子查询的连接条件对另外一张表进行查询,连接条件匹配上的进行UPDATE,无法匹配的执行INSERT。这个语法仅需要一次全表扫描就完成了全部工作,执行效率要高于INSERT+UPDATE。

2、SQLAlchemy中对数据库操作常用的几条语句:

Session.query(table)
Session.add(record)
Session.merge(record)
Session.delete(record)
Session.commit()
Copy after login


Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
2 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
Repo: How To Revive Teammates
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: How To Get Giant Seeds
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

What is the reason why pipeline persistent storage files cannot be written when using Scapy crawler? What is the reason why pipeline persistent storage files cannot be written when using Scapy crawler? Apr 01, 2025 pm 04:03 PM

When using Scapy crawler, the reason why pipeline persistent storage files cannot be written? Discussion When learning to use Scapy crawler for data crawler, you often encounter a...

Python Cross-platform Desktop Application Development: Which GUI Library is the best for you? Python Cross-platform Desktop Application Development: Which GUI Library is the best for you? Apr 01, 2025 pm 05:24 PM

Choice of Python Cross-platform desktop application development library Many Python developers want to develop desktop applications that can run on both Windows and Linux systems...

What is the reason why the Python process pool handles concurrent TCP requests and causes the client to get stuck? What is the reason why the Python process pool handles concurrent TCP requests and causes the client to get stuck? Apr 01, 2025 pm 04:09 PM

Python process pool handles concurrent TCP requests that cause client to get stuck. When using Python for network programming, it is crucial to efficiently handle concurrent TCP requests. ...

How to view the original functions encapsulated internally by Python functools.partial object? How to view the original functions encapsulated internally by Python functools.partial object? Apr 01, 2025 pm 04:15 PM

Deeply explore the viewing method of Python functools.partial object in functools.partial using Python...

Python hourglass graph drawing: How to avoid variable undefined errors? Python hourglass graph drawing: How to avoid variable undefined errors? Apr 01, 2025 pm 06:27 PM

Getting started with Python: Hourglass Graphic Drawing and Input Verification This article will solve the variable definition problem encountered by a Python novice in the hourglass Graphic Drawing Program. Code...

How to optimize processing of high-resolution images in Python to find precise white circular areas? How to optimize processing of high-resolution images in Python to find precise white circular areas? Apr 01, 2025 pm 06:12 PM

How to handle high resolution images in Python to find white areas? Processing a high-resolution picture of 9000x7000 pixels, how to accurately find two of the picture...

How to efficiently count and sort large product data sets in Python? How to efficiently count and sort large product data sets in Python? Apr 01, 2025 pm 08:03 PM

Data Conversion and Statistics: Efficient Processing of Large Data Sets This article will introduce in detail how to convert a data list containing product information to another containing...

Difference in the decryption results of Node.js, Python and Go: Why does Node.js fail to decrypt AES-128-ECB? Difference in the decryption results of Node.js, Python and Go: Why does Node.js fail to decrypt AES-128-ECB? Apr 01, 2025 pm 04:36 PM

Differential analysis of output results of Node.js, Python and Go decryption algorithms This article will provide AES-128-ECB solutions implemented in three different programming languages ​​(Node.js, Python, Go)...

See all articles