在django中使用psycopg2的PostgreSQL ALTER SEQUENCE

时间:2018-03-28 06:45:58

标签: python sql django postgresql psycopg2

我正在尝试使用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。

2 个答案:

答案 0 :(得分:1)

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

connection.commit()

答案 1 :(得分:0)

cursor.execute('ALTER SEQUENCE gs_requests_id_seq RESTART WITH {};'.format(last_id))

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