pd.read_sql_query 单/双引号格式化
Posted
技术标签:
【中文标题】pd.read_sql_query 单/双引号格式化【英文标题】:pd.read_sql_query single / double quotes formatting 【发布时间】:2019-05-21 22:24:14 【问题描述】:我正在使用 Python(Jupyter Notebook) 和 Postgres 数据库,并且正在努力填充 Pandas 数据框。
使用 pgAdmin4 中的查询生成器可以正常运行 sql 代码
SELECT "Date","Close" FROM test WHERE "Symbol" = 'AA'
但是我无法在我的 Jupyter 笔记本中使用它,我认为它与单引号和双引号有关,但不知道要更改什么并且碰壁了。在我正在尝试的笔记本中
df = pd.read_sql_query('SELECT "Date","Close" FROM public.test WHERE "Symbol" = AA', conn)
但不知道在查询的 AA(数据)部分周围使用什么引号,如果我使用双引号,pandas 认为 AA 是一列,如果我使用单引号,它会破坏字符串。
如果有人能指出我正确的方向,我将不胜感激。
谢谢
【问题讨论】:
猜一猜:去掉字段名的引号。df = pd.read_sql_query('SELECT Date, Close FROM public.test WHERE Symbol = AA', conn)
您是否尝试将查询作为raw string
传递?
应该这样做:df = pd.read_sql_query("SELECT [Date], [Close] FROM public.test WHERE Symbol = 'AA'", conn)。您需要将单引号与双引号结合起来。让我知道它是否有效。
【参考方案1】:
这将起作用:
df = pd.read_sql_query("SELECT Date,Close FROM public.test WHERE Symbol = 'AA'", conn)
Sql 字符必须有单引号,但列名根本不需要引号。
如果你真的在 sql 查询中需要双引号,那么只需确保在 python 字符串上使用三外引号,如下所示:
df = pd.read_sql_query("""SELECT "Date" FROM public.test WHERE Symbol = 'AA'""", conn)
【讨论】:
感谢大家的帮助,将列名从引号中取出是一个很大的帮助,我还必须将列名更改为全小写才能使其正常工作。再次感谢,没有这个网站我会迷路 如果您对答案感到满意,请将其标记为已接受,以便以后的读者知道。很高兴我能帮上忙。【参考方案2】:如果您有一个巨大的查询,您可以使用三引号,您可以像这样在多行中声明它:
df = pd.read_sql_query("""SELECT "Date","Close"
FROM public.test
WHERE Symbol = 'AA'""", conn)
@Marjan Moderc 的解决方案当然也可以。
【讨论】:
以上是关于pd.read_sql_query 单/双引号格式化的主要内容,如果未能解决你的问题,请参考以下文章
Visual Studio Code 使用双引号格式化代码,尽管 linter 代码样式需要单引号
Python如何将单引号转换为双引号以格式化为json字符串