Psycopg2 неопределенный столбец по значению столбца

psycopg2 сейчас ведет себя со мной как подросток.

cur = conn.cursor()
        url = "https://shofi-mod.s3.us-east-2.amazonaws.com/" + str(rawbucketkey)
        query = f"""UPDATE contentcreatorcontentfeedposts_contentfeedpost
                    SET picturemediatype = TRUE, mediakey ={rawbucketkey},
                    mediaurl= "{url}", active = TRUE, postsubmit = FALSE
                    WHERE contentcreator_id ={userid} AND
                    id ={contentpostid};
                    COMMIT;"""


        cur.execute(query)
        cur.close()

Но я продолжаю получать ошибку:

[ERROR] UndefinedColumn: column "https://shofi-mod.s3.us-east-2.amazonaws.com/061909729140543151" does not exist
LINE 3:                     mediaurl= "https://shofi-mod.s3.us-east-...
                                      ^

Traceback (most recent call last):
  File "/var/task/lambdarunner.py", line 163, in lambda_handler
    cur.execute(query)

и в моей базе данных действительно есть колонка media

class ContentFeedPost(models.Model):
   contentcreator = models.ForeignKey(ContentCreatorUsers, on_delete=models.CASCADE)
   creationtimestamp = models.DateTimeField(auto_now_add=True)
   likes = models.BigIntegerField(default= 0)
   favoritedtimes = models.BigIntegerField(default=0)
   tipcount = models.IntegerField(default=0)
   mediakey = models.CharField(max_length=200, null=True, blank=True)
   mediaurl = models.CharField(max_length=200, null=True, blank=True)
   audiomediatype = models.BooleanField(default=False)
   videomediatype = models.BooleanField(default=False)
   audiotitle = models.CharField(max_length=100, null=True, blank=True)
   videoplaceholderimage = models.CharField(max_length=200, blank=True, null=True)
   videoplaceholderimagekey = models.CharField(max_length=200, blank=True, null=True)
   audioplaceholderimage = models.CharField(max_length=200, blank=True, null=True)
   audioplaceholderimagekey = models.CharField(max_length=200, blank=True, null=True)
   picturemediatype = models.BooleanField(default=False)
   postsubmit = models.BooleanField(default=True)
   posttext = models.CharField(max_length=1000, blank=True, null=True)
   active = models.BooleanField(default=False)

Выше приведено определение django ORM

Что странно, так это то, что похоже, что он жалуется на значение, которое я пытаюсь установить для столбца mediaurl. Это не имеет смысла. Есть ли что-то, что я делаю неправильно, что очевидно?

Строковые значения в Postgres разграничиваются одинарными, а не двойными кавычками. Двойные кавычки используются для разделения сложных имен столбцов.

Кстати, вам следовало бы позволить psycopg2 выполнять замену. Это сразу бы решило проблему:

cur = conn.cursor()
url = "https://shofi-mod.s3.us-east-2.amazonaws.com/" + str(rawbucketkey)
query = """UPDATE contentcreatorcontentfeedposts_contentfeedpost
                    SET picturemediatype = TRUE, mediakey = %s,
                    mediaurl= %s, active = TRUE, postsubmit = FALSE
                    WHERE contentcreator_id = %s AND
                    id = %s;
                    COMMIT;"""


cur.execute(query, (rawbucketkey, url, userid, contentpostid) )
cur.close()
Вернуться на верх