Perl DBI fetchall_hashref

2024-04-15

考虑下表:

mysql> select * from vCountryStatus;
+-------------+------------+------+---------+--------+-----------------+
| CountryName | CountryISO | Code | Status  | Symbol | CurrencyName    |
+-------------+------------+------+---------+--------+-----------------+
| Brazil      | BR         |   55 | LIVE    | BRL    | Brazilian Real  |
| France      | FR         |   33 | offline | EUR    | Euro            |
| Philippines | PH         |   63 | LIVE    | PHP    | Philippino Peso |
+-------------+------------+------+---------+--------+-----------------+
3 rows in set (0.00 sec)

我正在尝试根据该表构造一个哈希。为此,我执行以下操作:

#!/usr/bin/perl

use DBI;
use Data::Dumper;

my $dbh = DBI->connect("dbi:mysql:database=db", "user", "password", {RaiseError => 1, AutoCommit => 0, FetchHashKeyName => "NAME_lc"}) || die "DB open error: $DBI::errstr";

my $sth = $dbh->prepare("select * from vCountryStatus");
$sth->execute;
my $hash = $sth->fetchall_hashref('countryiso');
print Dumper($hash);

这是生成的输出:

$VAR1 = {
          'PH' => {
                    'symbol' => 'PHP',
                    'status' => 'LIVE',
                    'countryname' => 'Philippines',
                    'countryiso' => 'PH',
                    'currencyname' => 'Philippino Peso',
                    'code' => '63'
                  },
          'BR' => {
                    'symbol' => 'BRL',
                    'status' => 'LIVE',
                    'countryname' => 'Brazil',
                    'countryiso' => 'BR',
                    'currencyname' => 'Brazilian Real',
                    'code' => '55'
                  },
          'FR' => {
                    'symbol' => 'EUR',
                    'status' => 'offline',
                    'countryname' => 'France',
                    'countryiso' => 'FR',
                    'currencyname' => 'Euro',
                    'code' => '33'
                  }
        };

问题是:为什么散列的键(countryiso)在散列内的值中重复?

我更喜欢的是以下输出:

$VAR1 = {
          'PH' => {
                    'symbol' => 'PHP',
                    'status' => 'LIVE',
                    'countryname' => 'Philippines',
                    'currencyname' => 'Philippino Peso',
                    'code' => '63'
                  },
          'BR' => {
                    'symbol' => 'BRL',
                    'status' => 'LIVE',
                    'countryname' => 'Brazil',
                    'currencyname' => 'Brazilian Real',
                    'code' => '55'
                  },
          'FR' => {
                    'symbol' => 'EUR',
                    'status' => 'offline',
                    'countryname' => 'France',
                    'currencyname' => 'Euro',
                    'code' => '33'
                  }
        };

是否可以使用 fetchall_hashref DBI 方法?或者我是否必须采用传统的方式,循环遍历每一行并动态构建哈希?


不,不能使用fetchall_hashref。但您可以迭代哈希值并删除键:

delete $_->{countryiso} for values %$hash;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Perl DBI fetchall_hashref 的相关文章

  • MySQL 与 PHP 的连接无法正常工作

    这是我的情况 我正在尝试使用 Apache 服务器上的 PHP 文件连接到 MySQL 数据库 现在 当我从终端运行 PHP 时 我的 PHP 可以连接到 MySQL 数据库 使用 php f file php 但是当我从网页执行它时 它只
  • 通过货币换算获取每种产品类型的最低价格

    我想选择每种产品类型中最便宜的 包括运费 价格转换为当地货币 最便宜 产品 价格 产品 运费 seller to aud 我的数据库有如下表 PRODUCTS SELLERS id type id seller id price shipp
  • 将 UPDATE 转换为 INSERT INTO ON DUPLICATE KEY UPDATE 语句

    我有这个 UPDATE MySQL 语句 效果很好 UPDATE table1 Inner Join table2 ON table2 id table1 gw id SET table1 field1 1 table1 field2 2
  • 通过连接从两个表中删除?

    我有两个表如下 tbl1 tbl2 id article id title image whole news tags author older datetime 其中 tbl1 id gt tbl2 article id 如何从两个表中删
  • MySQL 服务器未启动

    当我做 mysql u root p并输入my password这就是我得到的 错误 2002 HY000 无法通过套接字 var run mysqld mysqld sock 连接到本地 MySQL 服务器 2 所以我输入 systemc
  • mySQL MATCH 跨多个表

    我有一组 4 个表 我想对其进行搜索 每个都有全文索引 查询可以使用每个索引吗 CREATE TABLE categories id int 5 unsigned NOT NULL auto increment display order
  • 社交应用程序的数据库设计和优化注意事项

    通常的情况 我有一个简单的应用程序 允许人们上传照片并关注其他人 因此 每个用户都会有类似 墙 或 活动源 的东西 他或她可以在其中看到他 她的朋友 他或她关注的人 上传的最新照片 大多数功能都很容易实现 然而 当涉及到这个历史活动源时 由
  • ActiveRecord3死锁重试

    Rails 3 或 ActiveRecord 3 是否有任何插件可以复制旧版本死锁重试 http agilewebdevelopment com plugins deadlock retry插入 或者 该插件仍然适用于 Rails 3 吗
  • 当“修复表”查询在 mysql 中不起作用时该怎么办?

    我收到此错误 表的存储引擎不支持修复 当我尝试使用查询修复表时repair table tbl college master 表是 innodb 类型 但我不知道我收到此错误 See 手册 http dev mysql com doc re
  • 使 pdo::query 静态

    当我运行下面的代码时出现此错误 我通常使用 msql 函数 但我尝试使用 PDO 代替 怎么了 致命错误 第 14 行无法静态调用非静态方法 PDO query
  • mysql-如何向列申请补助?

    用户名 撤销对数据库的选择 Person I set GRANT SELECT id ON database Person TO username localhost 不是工作 gt SELECT secret FROM Person Go
  • 如何在 Laravel 查询中使用多个 OR,AND 条件

    我需要 Laravel 查询帮助 我的自定义查询 返回正确结果 Select FROM events WHERE status 0 AND type public or type private 如何写这个查询Laravel Event w
  • Perl 中可以使用哪种语法糖来减少左/右值运算符与 if 语句的代码?

    那里有很多语句 因为 Perl 是一种非常甜蜜的语言 但任何语言中最常用的语句都是 if 语句和设置值的组合 我想我已经找到了很多 但仍然存在一些空白 最终 目标是不必多次编写变量名 这是我到目前为止所拥有的 r s r s unless
  • 截断 Mysql 表 Cron 作业?

    我在如何使用 cron 作业截断 Mysql 表时遇到了一些麻烦 无论我尝试什么 我似乎都无法让数据库清除表格 感谢您的帮助 mysql uderp example pexample hlocalhost Dexample e TRUNCA
  • MySQL 使用 ALTER IGNORE TABLE 出现重复错误

    我的 MySQL 中有一个有重复项的表 我尝试删除重复项并保留一项 我没有主键 我可以通过以下方式找到重复项 select user id server id count as NumDuplicates from user server
  • 为什么我的 if 语句没有按我预期的方式工作?

    我正在尝试实现以下目标 我向我的 SQL 数据库询问使用SELECT FROM subjects 这样做之后我要求使用数组mysqli fetch assoc 在那之前一切都很好 现在的问题是 当我尝试在每个循环中修改 genero 的值
  • 使用 PHP 的 MySQL 连接字符串

    我正在尝试通过本地计算机连接到托管在我的服务器上的数据库 我的服务器有cPanel 11 它是一个典型的共享服务器 由CentOS提供支持 安装了PHP和MySQL 准确地说 我在同一台服务器上持有经销商帐户 我想在不同帐户或域之间访问数据
  • 将古吉拉特语文本插入 MySQL 表会产生垃圾字符和不可读的文本

    我有三个 MySQL 表 我正在向其中插入古吉拉特语内容 当我插入两个表时 它们插入得很好并且可读 但在一个表中 它显示垃圾字符 不可读的文本 我怎样才能解决这个问题 MySQL 有每个表的字符集设置 http dev mysql com
  • 在 MySQL 中使用 COUNT 时如何返回 0 而不是 null

    我使用此查询返回存储在 sTable 中的歌曲列表以及存储在 sTable2 中的总项目数 SQL queries Get data to display sQuery SELECT SQL CALC FOUND ROWS str repl
  • Mysql 创建定义器

    我创建了一个在 CentOS Web 服务器上运行的 Intranet Web 应用程序 该应用程序使用另一个本地服务器 始终是 CentOS 作为 MySQL 数据库 在数据库内部我创建了例程 这些例程总是这样开始 CREATE DEFI

随机推荐

  • 如何在animationDidStop委托中识别CAAnimation?

    我遇到了一个问题 我有一系列重叠的 CATransition CAAnimation 序列 所有这些序列我都需要在动画停止时执行自定义操作 但我只想要一个动画DidStop 的委托处理程序 但是 我遇到了一个问题 似乎没有一种方法可以唯一地
  • 在 C# 中以编程方式创建 DHCP 预留

    我被分配的任务是创建一个应用程序 该应用程序接收 MAC 地址并为该 MAC 地址创建 DHCP 保留 NET 中是否有内置的 API 可以轻松完成此任务 当我为基础设施编写应用程序时 Windows 2000 资源工具包中有一个名为 Dh
  • Python,如何在每一行中打印字典键及其值?

    请参阅下图以供参考 gt gt gt for key in d for item in d key print key item 1 2 1 3 2 4 2 5
  • 匿名命名空间:它们真的那么好吗?

    我一直在使用static关键字时间较长 用于定义内部链接 后来 我改用 C 风格 将本地事物包装在匿名命名空间中 然而 现在当我使用匿名命名空间多年后 我开始认为static关键字更容易使用 一个常见的问题是我有这样的模式 namespac
  • 不再支持 Xlsx 文件。设置新的 BW2 项目的解决方案?

    经过几个月的休息后 我本周恢复了 BW2 的计算 由于 XLRD 的更改 我的旧笔记本不再工作 它不再读取 xlsx 如果我理解的话 这个帖子 https exerror com xlrd biffh xlrderror excel xls
  • 为什么在打开连接的情况下会出现“阅读器关闭时调用 HasRows 的尝试无效”?

    我有这个代码 this is managed elsewhere SqlConnection connection connection Open this is one block of code separate from the ab
  • 如何将值参数传递给 Bootstrap 中的 modal.show() 函数

    我有一个页面显示当地咖啡馆的列表 当用户单击某个咖啡馆时 会显示一个模式对话框 其中已预先填写了 咖啡馆名称 该页面包含许多咖啡馆名称 表单应包含他点击的 咖啡馆名称 以下是生成为带有链接按钮的文本的咖啡馆名称列表 table class
  • SQL查询查找同一天安装和卸载应用程序的用户

    我正在尝试使用 Google BigQuery 中 Firebase Analytics 的数据来查找在同一天安装和卸载该应用程序的用户 这就是我到目前为止所得到的 我有一个查询 为我提供安装或卸载应用程序的用户 或 app instanc
  • Flask-WTF - validate_on_submit() 永远不会执行

    我正在使用 Flask WTF 这是我的表格 from flask ext wtf import Form TextField class BookNewForm Form name TextField Name 这是控制器 book ro
  • 如何从另一个视图更新一个视图的 UI [SwiftUI 问题]

    总的来说 我是 Swift 和 iOS 开发的新手 我正在 SwiftUI 中构建一个应用程序 假设不同文件中有 2 个单独的视图 MainView Results 和 TabBar 忽略命名 这只是一个示例 这 2 个视图位于 2 个单独
  • 从绘图中删除线

    只是一个简单的问题 我正在尝试在 R 中绘制图表 并且我已经介绍了如何做到这一点 但是如何删除刚刚创建的线 例如 x lt c 1 2 4 5 6 7 7 8 10 y lt c 40 30 10 20 53 20 10 5 plot x
  • 触发器和数据触发器有什么区别?

    他们看起来是一样的 有显着差异吗 我想我错过了一些东西 一个常规的Trigger仅响应依赖属性 A DataTrigger可以由任何 NET 属性触发 通过设置其Binding财产 但是 它的 setter 仍然可以仅针对依赖属性
  • 如何在协议中声明通用协议属性要求

    挣扎了一段时间 如果你能阐明这一点 那将会非常有帮助 我有一个APIWorkerProtocol它有一个属性要求 所需的属性是一个协议 即DataParserProtocol protocol APIWorkerProtocol var a
  • scala 类型的上限和下限

    考虑以下层次结构 class C1 class C2 extends C1 class C3 extends C2 class C4 extends C3 我想写一个只接受类型的函数C2 and C3 为此我想到了以下几点 def f C
  • Bootstrap 的工具提示在悬停时将表格单元格向右移动一点

    我在我的项目中使用 Bootstrap 3 1 1 我的表格中的每个单元格都包含如下数据000 or 111 悬停时 我想将此数据显示为工具提示 到目前为止 这有效 但是 当我将鼠标悬停在 td 所有相邻单元格向右移动 这是我的 JSFid
  • 向 UITextView 添加轮廓/描边

    我想将轮廓或描边添加到可编辑的UITextView用户键入的文本 就像模因一样 http t qkme me 3oi5rs jpg http t qkme me 3oi5rs jpg 我必须使用UITextView因为我需要多线支持 我已经
  • 如何使用 ggplot2 在多面图中定义 y 轴中断?

    我必须绘制具有不同范围值的数据 我正在使用 ggplot2 的构面设计和选项facet grid variable scales free 但是 我想设置 y 轴上的中断值 以便对于所有变量 中断都是c 0 max variable 2 m
  • 如何将对象注入到 WCF 验证器类中

    跟进使用依赖注入世界碳基金服务 https stackoverflow com questions 881705 how to inject an object into a wcf service 有没有办法将 DI 用于 WCF验证者
  • 点击时展开 UICollectionView 及其单元格

    我正在尝试制作一个过渡动画 如链接中的演示here https dribbble com shots 2733571 Citadela countries 因此 当我单击该单元格时 它会展开并覆盖整个屏幕 这是我的代码 我不得不承认我对 C
  • Perl DBI fetchall_hashref

    考虑下表 mysql gt select from vCountryStatus CountryName CountryISO Code Status Symbol CurrencyName Brazil BR 55 LIVE BRL Br