我可以在这里找到很多关于 PSQL 中的引号的信息,但没有什么能完全适合这个问题。
首先,它是一个杂物。我知道这是一个杂牌,但我认为我坚持下去了(尽管对其他选择持开放态度)
我有一个近乎黑匣子的第三方 linux 设备,我对其访问权限有限,我可以使用 bash、python 和 psql。我没有 psycopg2 或任何其他 pg 库。
我必须使用的数据库使用需要引用的区分大小写的表名(不要问......)
所以,目前我编写 OS shell 命令来获取数据,然后我会根据我的需要摆弄并转换为 JSON
一个简单的例子:
pg_str = "psql -U pword dbname -A -t -c "
sql = "SELECT * FROM \"Addresses\" WHERE id=999"
os_str = pg_str + "\'" + sql + "\'" + ";"
data = string.split(os.popen(os_str).read())
没问题。我并不是说它很漂亮,但它确实有效(记住我不能导入任何数据库库......)
当我在文本字段上有 where 子句时,一切都会出错:
pg_str = "psql -U pword dbname -A -t -c "
sql = "SELECT * FROM \"Addresses\" WHERE town='london'"
os_str = pg_str + "\'" + sql + "\'" + ";"
data = string.split(os.popen(os_str).read())
太多的报价组合无法应付......?
我显然已经尝试了很多转义组合并且已经搜索了几个小时,但是每个解决方案似乎都需要我无法访问的库。
我不是 python 或 psql 专家 - 这是关于我目前的限制。我确信我会以错误的方式去做,但目前在找出正确的方式时被打败了......