postgresql 强制python对字符串使用'而不是'

ssm49v7z  于 2023-05-17  发布在  PostgreSQL
关注(0)|答案(2)|浏览(92)

我有一个脚本,它使用psycopg2库将数据从一个数据库迁移到另一个数据库,该脚本是用python和sql编写的。
我从第一个数据库中检索一个字符串,并将其存储在列表中,以便在收集完所需数据后将其放入第二个数据库。
如果字符串中有撇号,那么python将使用“”表示字符串。这样做的问题是,sql将“”解释为指定列名,而将“”解释为字符串,而python将两者都解释为字符串。我希望强制Python使用撇号来表示字符串(或其他合适的解决方法)
Google什么也没发现。甚至找不到一个提到的事实,即python将使用““当你有撇号在你的字符串。我曾经考虑过用一个不同的字符替换字符串中的撇号,然后再转换回来,但这似乎是一个笨拙的解决方案。
举个例子

MyString = 'it\'s'
MyList = [MyString]
print(MyList) # returns "it's"
print(MyList[0]) # returns it's

当我将新值插入数据库时,我正在插入整个列表作为值。

INSERT INTO table VALUES MyList

这就是错误出现的地方,因为字符串使用“”而不是“”。python或sql端的解决方案都可以工作。

jdzmm42g

jdzmm42g1#

找到了一个定位器。这是一个有点janky,但它的工作。将列表转换为字符串。像这样使用replace函数:

MyString = MyString.replace('"',"'")

然后改用该字符串。

2uluyalo

2uluyalo2#

一个好的解决方案是使用json模块转换为字符串。这将总是给予你“因为”实际上不是有效的JSON。

import json

MyList = ['hi', 'there']
MyString = json.dumps(MyList)
print(MyString)  # ["hi", "there"]

相关问题