Wenn ich versuche, eine Zeile mit Herokus "Heroku Postgres --Add-ons" hinzuzufügen, ärgere ich mich über "ERROR: ALTER TABLE kann in einer schreibgeschützten Transaktion nicht ausgeführt werden".
Erstellen Sie eine Klasse, um von einem solchen Python aus auf die Postgres-Datenbank zuzugreifen.
import os
import psycopg2
import json
import pprint
class PostgreSql:
def __init__(self):
self.conn = self.get_connection()
self.cur = self.conn.cursor()
##############################################
#DB-Verbindungserfassungsfunktion
#
def get_connection(self):
dsn = "host=XXXXXXXXXXXXXX\
port=XXXX \
dbname=XXXXXXXXXX \
user=XXXXXXXXX \
password=XXXXXXXXXXXXXX"
return psycopg2.connect(dsn)
##############################################
#Funktion einfügen
#
def insert(self, sqlStr):
self.cur.execute('BEGIN')
self.cur.execute(sqlStr)
self.cur.execute('COMMIT')
##############################################
#Funktion zur Auswahl mit MySQL
#
def select(self, sqlStr):
self.cur.execute(sqlStr)
return list(self.cur)
if __name__ == "__main__":
psql = PostgreSql()
##############################################
#Spalte hinzufügen
#
sql = "ALTER TABLE tbl_name ADD COLUMN category2 text;"
psql.insert(sql)
Fügen wir eine Spalte mit der Einfügefunktion der von uns erstellten psql-Klasse hinzu! !!
sql = "ALTER TABLE tbl_name ADD COLUMN category2 text;"
psql.insert(sql)
Wenn es ausgewählt und im Heroku-Dashboard hinzugefügt wird, ist es fertig !!
Dies ist die Lösung für "FEHLER: ALTER TABLE kann in einer schreibgeschützten Transaktion nicht ausgeführt werden".