[PYTHON] J'ai du mal à obtenir "ERROR: impossible d'exécuter ALTER TABLE dans une transaction en lecture seule" sur heroku

problème

Quand j'essaye d'ajouter une ligne avec "Heroku Postgres - Add-ons" de heroku, je me fâche avec "ERREUR: impossible d'exécuter ALTER TABLE dans une transaction en lecture seule".

sql_test2.png

Solution

Créez une classe pour accéder à la base de données Postgres à partir d'un tel python.


import os
import psycopg2
import json
import pprint

class PostgreSql:
    def __init__(self):
        self.conn = self.get_connection()
        self.cur  = self.conn.cursor()

    ##############################################
    #Fonction d'acquisition de connexion DB
    #
    def get_connection(self):
        dsn = "host=XXXXXXXXXXXXXX\
            port=XXXX \
            dbname=XXXXXXXXXX \
            user=XXXXXXXXX \
            password=XXXXXXXXXXXXXX"
        return psycopg2.connect(dsn)
    
    ##############################################
    #insérer une fonction
    #
    def insert(self, sqlStr):
        self.cur.execute('BEGIN')
        self.cur.execute(sqlStr)
        self.cur.execute('COMMIT')

    ##############################################
    #Fonction de sélection avec mysql
    #
    def select(self,  sqlStr):
        self.cur.execute(sqlStr)
        return list(self.cur)

if __name__ == "__main__":

    psql = PostgreSql()

    ##############################################
    #Ajouter une colonne
    #
    sql = "ALTER TABLE tbl_name ADD COLUMN category2 text;"
    psql.insert(sql)

Ajoutons une colonne en utilisant la fonction d'insertion de la classe psql que nous avons créée! !!

    sql = "ALTER TABLE tbl_name ADD COLUMN category2 text;"
    psql.insert(sql)

S'il est sélectionné et ajouté sur le tableau de bord d'heroku, c'est fait !!

sql_test.png

C'est la solution pour "ERREUR: impossible d'exécuter ALTER TABLE dans une transaction en lecture seule".

Recommended Posts

J'ai du mal à obtenir "ERROR: impossible d'exécuter ALTER TABLE dans une transaction en lecture seule" sur heroku
J'ai du mal à obtenir une erreur de codage Unicode sur jrnl (Python) sur Mac / Marvericks.