我正在尝试将 IN 语句与 psycopg2 一起使用。我正在传递一个元组,但是我的其中一项是包含单引号的字符串(例如:l'Enfant Plaza)。
将其转换为元组时,Python 会自动添加双引号(例如:('Union Station', "l'Enfant Plaza", 'Dupont Cir'))
因此,当我执行 SQL 查询时,出现错误:
dataframe = pd.read_sql("""SELECT * FROM trips
WHERE originlocation IN {}
""".format(origin_locations_tuple), connection)
ERROR: column "l'Enfant Plaza" does not exist
最佳答案
Clodoaldo 的建议让我走上了正确的道路。使用 Pandas 查询参数解决了它。工作版本如下所示:
sql = """SELECT * FROM final_trips_prod
WHERE (dateoftrip + origintime)
BETWEEN (TIMESTAMP %(datetime_selected)s - INTERVAL '3 HOURS')
AND (TIMESTAMP %(datetime_selected)s + INTERVAL '3 HOUR')
AND originlocation IN %(origin_locations)s
AND destinationlocation IN %(destination_locations)s
"""
dataframe = pd.read_sql_query(sql = sql,
con = connection,
params = {
'datetime_selected': datetime_selected,
'origin_locations': origin_locations,
'destination_locations': destination_locations})
关于python - 将 Pandas 与 IN 语句的元组一起使用时转义单引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45762820/