【发布时间】:2020-07-16 00:46:45
【问题描述】:
我无法查询在 postgres db(本地)上使用 sqlalchemy 创建的表。
虽然我能够执行并接收查询结果:
SELECT * FROM olympic_games
当我尝试访问单个列或对表执行任何其他操作时收到错误消息:
SELECT games FROM olympic_games
错误信息是(从波兰语翻译过来的几句话):
ProgrammingError: (psycopg2.errors.UndefinedColumn) BŁĄD: 列“游戏”不存在
第 1 行:选择 COUNT(运动)
^
提示:也许你的意思是“olympic_games.Games”。SQL:从 olympic_games LIMIT 5 中选择游戏;]
(此错误的背景:http://sqlalche.me/e/f405)
这几乎可以概括为该程序看不到,或者可以访问特定列,并显示它不存在。
我尝试使用table.column 格式访问,但效果不佳。我还可以通过information_schema.columns 看到列名
数据 (.csv) 使用 pd.read_csv 加载,然后是 DataFrame.to_sql。代码如下,感谢帮助!
engine = create_engine('postgresql://:@:/olympic_games')
with open('olympic_athletes_2016_14.csv', 'r') as file:
df = pd.read_csv(file, index_col='ID')
df.to_sql(name = 'olympic_games', con = engine, if_exists = 'replace', index_label = 'ID')
两个执行命令都返回相同的错误:
with engine.connect() as con:
rs = con.execute("SELECT games FROM olympic_games LIMIT 5;")
df_fetch = pd.DataFrame(rs.fetchall())
df_fetch2 = engine.execute("""SELECT games FROM olympic_games LIMIT 5;""").fetchall()
【问题讨论】:
标签: python sql postgresql sqlalchemy