pd.read_sql_query 单引号/双引号格式

pd.read_sql_query single / double quotes formatting

提问人:user2908926 提问时间:12/21/2018 最后编辑:Marjan Modercuser2908926 更新时间:12/21/2018 访问量:6049

问:

我正在使用 Python(Jupyter Notebook) 和 Postgres 数据库,并且正在努力填充 Pandas 数据帧。

sql 代码使用 pgAdmin4 中的查询构建器运行良好,这是

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 是一个列,如果我使用单引号,它会破坏字符串。

如果有人能为我指出正确的方向,我将不胜感激。

谢谢

python sql postgresql pandas 行情

评论

0赞 roganjosh 12/21/2018
猜一猜:去掉字段名称上的引号。df = pd.read_sql_query('SELECT Date, Close FROM public.test WHERE Symbol = AA', conn)
0赞 Mortz 12/21/2018
您是否尝试过将查询作为 ?raw string
0赞 MEdwin 12/21/2018
这应该可以做到:df = pd.read_sql_query(“SELECT [Date], [Close] FROM public.test WHERE Symbol = 'AA'”, conn)。您需要将单引号与双引号组合在一起。让我知道它是否有效。

答:

2赞 Marjan Moderc 12/21/2018 #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)

评论

0赞 user2908926 12/21/2018
感谢大家的帮助,将列名从引号中取出是一个很大的帮助,而且我必须将列名更改为全部小写才能使其正常工作。再次感谢,如果没有这个网站,我会迷路的
0赞 Marjan Moderc 12/21/2018
如果您对答案感到满意,请将其标记为已接受,以便未来的读者知道。很高兴我帮了忙。
2赞 Clem G. 12/21/2018 #2

如果你有一个巨大的查询,你可以使用三引号,你可以在多行中声明它,如下所示:

df = pd.read_sql_query("""SELECT "Date","Close" 
                          FROM public.test 
                          WHERE Symbol = 'AA'""", conn)

当然,@Marjan Moderc 的解决方案也有效。