jde*_*eng 2 python postgresql psycopg2
我正在尝试使用 psycopg2 访问 PostgreSQL:
sql = """
SELECT
%s
FROM
table;
"""
cur = con.cursor()
input = (['id', 'name'], )
cur.execute(sql, input)
data = pd.DataFrame.from_records(cur.fetchall())
Run Code Online (Sandbox Code Playgroud)
但是,返回的结果是:
0
0 [id, name]
1 [id, name]
2 [id, name]
3 [id, name]
4 [id, name]
Run Code Online (Sandbox Code Playgroud)
如果我尝试访问单列,它看起来像:
0
0 id
1 id
2 id
3 id
4 id
Run Code Online (Sandbox Code Playgroud)
列名周围的引用似乎有问题(不应出现单引号):
In [49]: print cur.mogrify(sql, input)
SELECT
'id'
FROM
table;
Run Code Online (Sandbox Code Playgroud)
但我正在关注文档:http : //initd.org/psycopg/docs/usage.html#
任何人都可以告诉我这里发生了什么?非常感谢!!!
小智 7
使用 AsIs 扩展
import psycopg2
from psycopg2.extensions import AsIs
column_list = ['id','name']
columns = ', '.join(column_list)
cursor.execute("SELECT %s FROM table", (AsIs(columns),))
Run Code Online (Sandbox Code Playgroud)
并且 mogrify 将显示它没有引用列名并按原样传递它们。