我应该Django的用户知道从MySQL迁移到PostgreSQL的时候?
-
26-09-2019 - |
题
我的大部分Django的经验,迄今已与MySQL和MySQLdb的。对于新的应用程序,我写的,我倾我的脚趾在PostgreSQL的水,现在我有的看到的光。
在写一个数据导入脚本,我偶然发现了与默认的自动提交行为的问题。我猜想还有其他“陷阱”可能出现。我应该是在寻找什么呢?
解决方案
<强>有Django的自动提交和默认的PostgreSQL之间的不一致性提交模式。强>
开箱,Django使用缺省的PostgreSQL模式“读提交”它结合了所有操作成当分贝光标超出范围即端部的单个事务。当一系列的操作过程中发生错误,就会出现问题。 Postgres的希望您能继续之前发出回滚,如果你不这样做,psycopg2抛出的InternalError下次去使用的连接时间。如果你依赖于Django的自动提交(默认),你可能不会正确回滚。
幸运的是,psycopg2具有用于另一操作模式中被称为“自动提交”,其中它不设置这些交易了支持。对于那些从MySQL未来的(或试图支持),这会带来一些理智的世界。在1.1中加入他们的支持,揭露它。以下添加到您的设置(需要改变的 1.2语法如果你是在主干)
DATABASE_OPTIONS = {
"autocommit": True,
}
有关的Django票的讨论#3460 勾画出粗砂的信息。
不隶属于 StackOverflow