使用 sqlalchemy 时出现编程错误:(psycopg2.errors.UndefinedColumn)

2023-12-10

我在查询使用 sqlalchemy 在 postgres db(本地)上创建的表时遇到问题。

虽然我能够执行并接收查询结果:

SELECT * FROM olympic_games 

当我尝试访问单个列或对表执行任何其他操作时收到错误消息:

SELECT games FROM olympic_games

错误消息是(从波兰语翻译的几句话):

编程错误:(psycopg2.errors.UndefinedColumn)BŁĄD:列“游戏”不存在

第 1 行:选择计数(运动)
^
提示:也许您的意思是“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()

本质上,这是 PostgreSQL 中提到的列标识符的双引号问题manual:

引用标识符也使其区分大小写,而未引用的名称始终折叠为小写。例如,标识符 FOO、foo 和“foo”被 PostgreSQL 视为相同,但“Foo”和“FOO”这三个标识符不同,并且彼此不同。

当 Pandas 数据框的任何列具有混合大小写时,DataFrame.to_sql通过在以下位置创建带双引号的列来保留区分大小写CREATE TABLE阶段。具体来说,使用以下 Python Pandas 代码replace

df.to_sql(name='olympic_games', con=engine, if_exists='replace', index_label='ID')

在 Postgres 中翻译如下:Sport是数据框中的标题案例列:

DROP TABLE IF EXISTS public."olympic_games";

CREATE TABLE public."olympic_games"
(
    ...
    "Sport" varchar(255)
    "Games" varchar(255)
    ...
);

一旦标识符被混合大小写引用,就必须始终以这种方式引用。所以sport不等于"Sport"。请记住,在 SQL 中,双引号实际上与单引号不同,单引号在 Python 中可以互换。

要解决此问题,请考虑将所有 Pandas 列渲染为小写,因为"games"是相同的games, Games or GAMES(但不是"Games" or "GAMES").

df.columns = df.columns.str.lower()
df.to_sql(name='olympic_games', con=engine, if_exists='replace', index_label='ID')

或者,保持原样并适当引用:

SELECT "Games" FROM olympic_games
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 sqlalchemy 时出现编程错误:(psycopg2.errors.UndefinedColumn) 的相关文章

  • 在ubuntu中安装pyinterval

    我正在尝试安装 python 库 pyinterval 它需要 crlibm C 标头 我已安装该标头 没有错误 但似乎是问题的根源 当我跑步时 sudo easy install pyinterval 我得到以下信息 Searching
  • 尝试打开 Excel 时出现“KeyError:“存档中没有名为“xl/sharedStrings.xml”的项目”

    我正在尝试使用 Python 脚本将数据导入 PowerBi 以便我可以安排它定期刷新数据 我面临着从 Excel 文件获取数据并收到错误的挑战 KeyError 没有名为 xl sharedStrings xml 的项目在档案中 导入时
  • ibapi nextValidId 并不总是被调用

    我构建了一个小型 ibapi python 应用程序来运行一些策略 同时注意保持与 tws 的连接 如果 tws 处于非活动状态 python 应用程序将启动并等待 并在 tws 启动时连接到 tws 但这是我的问题 nextValidId
  • mypy 错误,使用 Union/Optional 重载,“重载函数签名 1 和 2 与不兼容的返回类型重叠”

    那么 让我们从一个例子开始 假设我们有几种可以组合在一起的类型 假设我们正在使用 add 来实施这一点 不幸的是 由于我们无法控制的情况 一切都必须是 可为空的 因此我们被迫使用Optional到处 from typing import O
  • 两个sql查询的性能差异?

    我的表中有一个具有文本数据类型的字段 以下两个sql查询的性能是否有差异 select from tablename where fieldname xyz select from tablename where fieldname zyx
  • matplotlib 示例代码不适用于 python 虚拟环境

    我正在尝试在 matplotlib 中显示图像的 x y z 坐标 示例代码 http matplotlib org examples api image zcoord html在全局 python 安装上工作得很好 当我移动光标时 x y
  • 从 FTP 服务器上的 ZIP 存档读取文件,无需下载到本地系统

    我在 FTP 服务器上的目标文件是 ZIP 文件 CSV 位于更远的两个文件夹中 我如何才能使用 BytesIO 让 pandas 读取 csv 而无需下载它 这是我到目前为止所拥有的 ftp FTP FTP SERVER ftp logi
  • 如何设置 pandas DataFrame _repr_html_ 方法的默认样式?

    我有一个 pandas DataFrame 其中有一列是 url 并且我编写了以下格式化程序以将其作为链接呈现在我的笔记本中 def make clickable val target blank to open new window re
  • 如何使用 Python 从 URL 中删除查询字符串

    Example http example com a text q2 text2 q3 text3 q2 text4 删除后 q2 它将返回 http example com q text q3 text3 在这种情况下 出现了多个 q2
  • 如何将点文本转换为几何图形

    我已经在我的数据库中安装了postgis 现在我的数据库中有 1 个区域 例如 79 4609576808001 43 9726680183837 我希望这个区域转换为几何类型 我在google上搜索发现St geomfromText会将文
  • 重置Keras模型的所有权重

    我希望能够重置整个 Keras 模型的权重 这样我就不必再次编译它 编译模型目前是我的代码的主要瓶颈 这是我的意思的一个例子 import tensorflow as tf model tf keras Sequential tf kera
  • 在 ubuntu 12.04 上安装 ReviewBoard

    我正在尝试使用 easy install 在 ubuntu 12 04 上安装 ReviewBoard http www reviewboard org docs manual 1 7 admin installation linux ht
  • 是否可以通过 Python 使用 Cocoa API?

    我想知道是否可以将 Cocoa Apple 的 API 与 Python 一起使用 以便能够运行像这样的任何代码link https developer apple com documentation appkit nsworkspace
  • 如何在 Ansible 中更新嵌套变量

    我有一些额外的信息 例如数据库连接详细信息等 存储在 etc ansible facts d environment fact 中 这些可以作为变量使用 例如ansible local environment database name 更
  • 二进制补码扩展 python?

    我想知道是否有一种方法可以像在 Python 中的 C C 中一样使用标准库 最好在位数组上 进行二进制补码符号扩展 C C Example program include
  • MySQL:进行基本搜索

    我的数据库中有一个名称表 我希望对其进行模糊搜索 例如我的数据库包含 Name ID John Smith 1 Edward Smith 2 Gabriel Gray 3 Paul Roberts 4 目前 当我通过 python 搜索数据
  • JavaFX ComboBox - 显示文本但在选择时返回 ID

    我有一个包含机场的数据库表 每个机场都有一个名称和一个 ID 在 JavaFX 中我有一个表单 其中包含ComboBox 组合框需要显示所有机场名称 并且在提交表单时需要将机场的 ID 插入数据库 而不是其名称 但我并没有真正弄清楚解决方案
  • Android Systrace 没有这样的文件或目录

    这是错误消息 D Programming Tools ADT bundle sdk platform tools systrace gt python systrace py Traceback most recent call last
  • 命名空间与常规包

    命名空间 Python 包之间有什么区别 没有 init py 和一个常规的Python包 有一个 init py 特别是当 init py普通包裹是空的吗 我很好奇 因为最近我忘记了 init py在我制作的包中 我从未注意到任何问题 事
  • 是否可以暂时禁用 Postgres 中的索引?

    我在一张表上有一个索引 我想暂时禁用它 但我找不到任何表明这是可能的文档 原因 我有一个索引 它可能会导致与它旨在加速的任何查询无关的查询问题 这是一个新的索引 自从引入以来 整个系统似乎速度较慢 我只是希望能够可靠地消除它作为罪魁祸首 这

随机推荐

  • 二元决策树(CART)的分裂和根节点

    如何在回归树中找到分割和根节点 我从多个向量制作了回归树 现在我必须提取多个向量的 rpart 的根节点 文件包含多个向量的数值A B C D E F G H前任 向量包含 4 3 6 7 2 4 5 等等类似的其他 B C D E F G
  • PutSql - 日期格式错误

    我正在尝试从 Teradata 读取数据并将其填充到 Oracle 数据库 请在下面找到我的流程 ExecuteSQL gt SplitAvro gt ConvertAvroToJSON gt ConvertJSONToSQL gt Put
  • 从Python中不同类中的类调用方法

    假设我有这个代码 class class1 object def init self don t worry about this def parse self array do something with array class cla
  • 覆盖滚动禁用

    So I have an overlay like below screenshot from example site 当菜单 A 部分 打开时 它会在主 div B 部分 上显示一个覆盖层 但是 当菜单打开时 我仍然可以滚动主 div
  • 使用正则表达式在 sed 中进行替换时,加上量词无法按预期工作

    输入是 PermitRootLogin 否 为什么以下 sed 表达式不能与 sed 一起使用 echo PermitRootLogin no sed s PermitRootLogin s PermitRootLogin yes 但是当我
  • 具有doctrine2、symfony2 和 postgresql 实体的案例

    我在使用 postgres 数据库的 symfony2 应用程序中遇到了关于 Dodocy2 的问题 我收到错误 SQLSTATE 3F000 Invalid schema name 7 ERROR schema main does not
  • 为什么 shell 会忽略通过变量传递给它的参数中的引号字符? [复制]

    这个问题在这里已经有答案了 这些工作如广告所示 grep ir hello world grep ir hello world 这些不 argumentString1 ir hello world argumentString2 ir he
  • 使用 ADF Pipeline 中的自定义活动从 OnPrem SQL Server 复制到 DocumentDB

    我正在尝试从本地 SQL 服务器中的 SQL 表复制数据 并使用 Azure 数据工厂管道中的自定义活动将其上传到文档数据库 谁能告诉我如何使用 IDotNetActivity 或任何其他接口或类来完成它 实际上 自定义活动目前无法访问本地
  • 使 HTML 不适用于 Windows 10 中的 Sphinx 文档

    我正在尝试遵循tutorial关于如何为项目设置 sphinx 和 Readthedocs 我当时在实习时使用过 Sphinx 在 ubuntu 上 设置非常无缝 我刚刚推出了sphinx quickstart在我的 anaconda po
  • 如何调用Enum单独的方法?

    我有一个枚举 可能如下所示 我的目标是拥有一个enum使用一些常见方法 我通过添加抽象方法来强制执行此操作 和一些 枚举值个体 方法 以下代码编译 public enum MyEnum VALUE Override public void
  • 在 iPhone 中使用图像(普通和 @2x)

    所以我正在构建一个使用图像作为按钮的应用程序 我提供了普通图像和 2x 图像 但是我不完全确定应该使用哪一个 如果我使用normal png 或使用基本上没有区别 电子邮件受保护 但是我读到使用 2x 需要更多内存 所以我觉得我不应该这样做
  • 为什么我们需要指定init方法?

    即使不指定以下代码块也可以正常运行init方法 如果是这样的话 这样做的目的是什么 init方法服务 struct Person var name String var age Int init name String age Int se
  • 通过USB端口发送和接收数据[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我想通过 USB 端口向设备发送 接收数据 从我的 Vista 电脑 是否有一个免费 便宜的图书馆可以做到这一点 以及这个项目的参与程度如何 不考虑
  • 将事件转发给所有JAVA组件

    我不知道如何解决这个问题 我正在开发一个图形编辑器 可以在其中绘制弧 线 我手动将圆弧组件的大小设置为 1000x1000 因此当拖放此圆弧时我不必更改它 然后我在这个组件中绘制所需尺寸的弧线 每个弧形组件都安装了鼠标监听器 问题是 只有最
  • 为什么这些梯度累积实现不起作用?

    Note 经过实验 我发现只有在 GPU 上训练时才会出现这个问题 我创建了一个 github 问题 50454 此时我不确定到底发生了什么 我正在研究梯度累积的实现 然而 这些方法似乎都不起作用 下面我描述了两种理论上可行但似乎与 Ten
  • 尝试将 EmailJS 与 React 结合使用时,服务 ID 无效

    我在我的网站上创建了一个联系我的表单 为此我使用了 EmailJS 然而 当我尝试通过联系表给自己发送邮件时 我收到了 400 错误The service ID is invalid 我遵循了该教程的每个步骤 因为我之前没有使用过 Emai
  • 可选类型“NSURL?”的值未拆封;你的意思是使用“!”吗?或者 '?'?

    我使用 Xcode 6 Beta 6 启动了一个 Swift 项目 该项目还使用了 Core Data 升级到 Xcode 6 GM 后 编译时出现以下错误 Users AppDelegate swift 58 52 Value of op
  • 如何在android中下载谷歌地图的特定区域

    我正在制作一个 Android 应用程序 它将在屏幕上显示谷歌地图 通过单击按钮 用户可以下载他 她的特定区域并将其存储在内部存储中 稍后 当互联网连接较差或不可用时 用户可以使用之前下载的离线地图 如何制作这样的应用程序 请指导我 谢谢
  • Perl 命令行多行替换

    我正在尝试使用命令行 perl 替换多行文件中的文本 我正在使用 Ubuntu Natty 以下是我的文本文件 称为 test txt 的内容 mysqld Basic Settings IMPORTANT If you make chan
  • 使用 sqlalchemy 时出现编程错误:(psycopg2.errors.UndefinedColumn)

    我在查询使用 sqlalchemy 在 postgres db 本地 上创建的表时遇到问题 虽然我能够执行并接收查询结果 SELECT FROM olympic games 当我尝试访问单个列或对表执行任何其他操作时收到错误消息 SELEC