【问题标题】:Pass values from a pandas Series to PostgreSQL query using psycopg2使用 psycopg2 将值从 pandas 系列传递到 PostgreSQL 查询
【发布时间】:2015-02-27 04:27:53
【问题描述】:

我在 DataFrame 中有一个列,其中包含我想从查询中返回的记录的 ID。

这是我目前所拥有的:

query = """select * from frames where recording_id in (%d) """ % (data['recording_id'].values)
mydata = pandas.read_sql(query, db_conn)

这会返回一个类型错误:

TypeError: %d format: a number is required, not numpy.ndarray

所以我也尝试使用.tolist() 而不是values,但我遇到了同样的问题。

传递这些值的正确方法是什么?

【问题讨论】:

  • ",".join(list(data["recording_id"]))
  • @JackManey 很抱歉,但我不确定如何使用您的评论来帮助我。 :(
  • 您想要一个以逗号分隔的列中元素列表。这就是你得到它的方式:通过",".join
  • @JackManey 我想我明白了。我收到一个类型错误:TypeError: sequence item 0: expected string, numpy.int64 found 但我想我可以解决这个问题

标签: python postgresql pandas psycopg2


【解决方案1】:

感谢 Jack 和一些谷歌搜索,我设法找到了解决方案:

query = """select * from frames where recording_id in (%d) """ % (','.join([str(i) for i in data['recording_id']]))

【讨论】:

  • 据我所知,这很容易受到 SQL 注入的攻击。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-02-02
  • 2018-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多