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()