我有一个脚本,它使用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端的解决方案都可以工作。
2条答案
按热度按时间jdzmm42g1#
找到了一个定位器。这是一个有点janky,但它的工作。将列表转换为字符串。像这样使用replace函数:
然后改用该字符串。
2uluyalo2#
一个好的解决方案是使用json模块转换为字符串。这将总是给予你“因为”实际上不是有效的JSON。