Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 对IN语句使用带元组的Pandas时转义单引号_Python_Postgresql_Pandas - Fatal编程技术网

Python 对IN语句使用带元组的Pandas时转义单引号

Python 对IN语句使用带元组的Pandas时转义单引号,python,postgresql,pandas,Python,Postgresql,Pandas,我试图将IN语句用于psycopg2。我正在传递一个元组,但是我的一个项是一个包含单引号的字符串(例如:l'Enfant Plaza) 将其转换为元组时,Python会自动添加双引号(例如:('Union Station','l'Enfant Plaza','Dupont Cir')) 因此,当我执行SQL查询时,我得到一个错误: dataframe = pd.read_sql("""SELECT * FROM trips WHER

我试图将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})

您没有直接使用Psycopg。不要自己构建查询字符串。检查如何使用Pandas传递查询参数。