加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

Django用户从MySQL迁移到PostgreSQL时应该知道什么?

发布时间:2020-12-16 23:24:15 所属栏目:Python 来源:网络整理
导读:到目前为止,我对Django的大部分经验都是使用 MySQL和mysqldb.对于我正在写的新应用程序,我正在PostgreSQL水中浸泡我的脚趾,现在我有 seen the light. 在编写数据导入脚本时,我偶然发现了默认自动提交行为的问题.我猜可能会出现其他“陷阱”.我还应该注意什么
到目前为止,我对Django的大部分经验都是使用 MySQL和mysqldb.对于我正在写的新应用程序,我正在PostgreSQL水中浸泡我的脚趾,现在我有 seen the light.

在编写数据导入脚本时,我偶然发现了默认自动提交行为的问题.我猜可能会出现其他“陷阱”.我还应该注意什么呢?

解决方法

Django的自动提交和默认的PostgreSQL提交模式之间存在不一致.

开箱即用,Django使用默认的PostgreSQL模式“read committed”,它将所有操作组合成一个事务,当db游标超出范围时结束.在该系列操作期间发生错误时会出现问题. Postgres希望您在继续之前发出回滚,如果不这样做,psycopg2会在您下次使用连接时抛出InternalError.如果你依赖于Django自动提交(默认),你可能不会正确回滚.

幸运的是,psycopg2支持另一种称为“autocommit”的操作模式,其中它不会设置这些事务.对于那些来自MySQL(或试图支持两者)的人来说,这给世界带来了一些理智.在1.1中,他们增加了支持以揭露它.将以下内容添加到您的设置中(如果您在主干上,则需要更改为1.2 syntax)

DATABASE_OPTIONS = {
    "autocommit": True,}

关于Django #3460票的讨论列出了坚韧不拔的细节.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读