我正try 将一行观测数据写入我的数据库,但我有一个名为LIST_VARIABLE的唯一变量,它是一个长度为1-3的字符串列表.所以有时是[字符串1],有时也是[字符串1‘,’字符串2‘]或[’字符串1‘,’字符串2‘,[字符串3].

当我try 通过以下方式将其添加到我的数据库时:

def add_to_cockroach_db():
        cur.execute(f"""
        INSERT INTO database (a, b, c)
        VALUES ({time.time()}, {event},{list_variable};  <--- this one
        """)
        conn.commit()

我将收到以下错误(为提高可读性,值已更改):

SyntaxError: at or near "[": syntax error
DETAIL:  source SQL:
INSERT INTO database (a, b, c)
        VALUES (a_value, b_value, ['c_value_1', 'c_value_2'])
                                  ^
HINT:  try \h VALUES

似乎不允许有一个列表变量,我怎么才能解决这个问题呢?

提前谢谢!

==同步,由长者更正==

LIST_VARIABLE例如,如下所示=[‘value1’,‘value2’]

推荐答案

可以使用以下命令将其转换为字符串

str(['c_value_1', 'c_value_2'])

它看起来像这样:

"['c_value_1', 'c_value_2']"

或者使用您 Select 的分隔符连接列表中的元素.例如,这将生成一个逗号分隔的字符串.

",".join(['c_value_1', 'c_value_2'])

它看起来像这样:

'c_value_1,c_value_2'

正如Maurice Meyer已经在注释中指出的那样,最好将值作为列表或元组传递,而不是自己格式化查询. 根据您 Select 的解决方案,您的命令可能如下所示:

cur.execute("INSERT INTO database (a, b, c) VALUES (%s, %s, %s)", (time.time(), event, ",".join(list_variable)))

Python相关问答推荐

Maya Python脚本将纹理应用于所有对象,而不是选定对象

在不同的帧B中判断帧A中的子字符串,每个帧的大小不同

并行编程:同步进程

Pandas—MultiIndex Resample—我不想丢失其他索引的信息´

统计numpy. ndarray中的项目列表出现次数的最快方法

语法错误:文档. evaluate:表达式不是合法表达式

如何将相同组的值添加到嵌套的Pandas Maprame的倒数第二个索引级别

如何重新组织我的Pandas DataFrame,使列名成为列值?

如何在Airflow执行日期中保留日期并将时间转换为00:00

裁剪数字.nd数组引发-ValueError:无法将空图像写入JPEG

大型稀疏CSR二进制矩阵乘法结果中的错误

如何在基于时间的数据帧中添加计算值

正则表达式反向查找

Django-修改后的管理表单返回对象而不是文本

判断字典键、值对是否满足用户定义的搜索条件

使用Numpy进行重写For循环矢量化

ImportError:在安装过程中找不到InstructorEmbedding的配置文件

Django按字段上的子字符串分组

在所有任务完成之前完成Python事件循环

FlaskApp无法在Google Cloud Run上运行:服务不可用503错误