【问题标题】:PostgreSQL ALTER SEQUENCE using psycopg2 in django在 django 中使用 psycopg2 的 PostgreSQL ALTER SEQUENCE
【发布时间】:2018-09-06 17:51:04
【问题描述】:

我正在尝试使用 psycopg 更改表中 id 字段的序列。这在我的本地服务器上运行良好,但不适用于生产。我没有遇到异常,序列只是没有重新启动。

def alter_sequence(last_id):
    try:
        dbname = settings.DATABASES['default']['NAME']
        user = settings.DATABASES['default']['USER']
        host = settings.DATABASES['default']['HOST']
        password = settings.DATABASES['default']['PASSWORD']
        port = settings.DATABASES['default']['PORT']
        connection = psycopg2.connect(
            dbname=dbname,
            user=user,
            password=password,
            host=host,
            port=port,
        )
        cursor = connection.cursor()
        cursor.execute('ALTER SEQUENCE "gs_requests_id_seq" RESTART WITH {}'.format(last_id))
        connection.close()
    except Exception as e:
        print(e)
    pass

我仔细检查了数据库设置 - 正确。由 django ORM 使用此设置执行的其他数据库操作工作正常。

我认为,关于我的项目设置的信息不足,但不知道我需要指定哪些信息。我的本地计算机上有 postgres 9.6,生产环境中有 10.1。

【问题讨论】:

    标签: python sql django postgresql psycopg2


    【解决方案1】:

    我找到了问题的根源。我没有承诺:

    connection.commit()

    【讨论】:

      【解决方案2】:
      cursor.execute('ALTER SEQUENCE gs_requests_id_seq RESTART WITH {};'.format(last_id))
      

      试试这个!!它对我有用!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-08-14
        • 2023-03-07
        • 2021-06-18
        • 2020-03-14
        • 1970-01-01
        • 2020-05-02
        • 2012-05-07
        相关资源
        最近更新 更多