列值上的 psycopg2 未定义列
psycopg2 undefined column on column value
psycopg2 现在对我来说 child。
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)
我的数据库实际上有一个媒体栏
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()
psycopg2 现在对我来说 child。
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)
我的数据库实际上有一个媒体栏
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()