python - 将 Pandas 与 IN 语句的元组一起使用时转义单引号

标签 python postgresql pandas

我正在尝试将 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/

相关文章:

java - Spring Data JPA - 转义重音法语字符(é,à,è,û..)

ruby-on-rails - 赫罗库 PG :copy unknown command?

postgresql - Postgresql 四舍五入到小数点后两位

python - Pandas :过滤值出现在对的两端,但不在组内

python - 使用 Python 的 PySFTP 和 get_r - "No such file or directory"

python-social-auth AuthCanceled 异常

python - Pandas Dataframe 将列解释为 float 而不是 String

python - 如何在父子关系上组合两个数据帧(介于连接和合并之间)

python/mongoengine 将关键字参数作为变量传递

python - 将多张卡片发布到时间线并附加视频时超出了截止日期