如何获取MySQL结果值作为字符串或数字?

问题描述 投票:0回答:1

我目前正在使用 PyMySQL 来查询我的 MySQL 数据库。我希望结果是一个字典,其中的列是键及其关联的值,我已经得到了。但我注意到日期和小数等类型的值作为对象返回,这不是我在其他语言和库中遇到的情况。一个例子是:

{'date': datetime.date(2023, 12, 26), 'store_number': 7, 'total': Decimal('11336.43')}

理想情况下,我只想要类似的东西:

{'date': '2023-12-26', 'store_number': 7, 'total': '10036.43'}

最好的方法是什么?我不一定需要使用 PyMySQL,但它似乎是一个流行的选择。我读过甚至询问过 ChatGPT,但我想我应该询问真实的人他们做过什么和知道什么。我找到的选项是:

  1. 有些人建议迭代或使用列表推导式来转换值,但这对我来说似乎有点奇怪,甚至可能很愚蠢,因为我每次都需要这样做或编写一个自定义函数来执行此操作。
  2. 使用转换器。这个好像比较合理。
  3. 在查询中转换值。这对我来说也很奇怪,因为我以前从未做过这样的事情。

任何帮助或见解将不胜感激。谢谢!

python mysql pymysql
1个回答
0
投票

这可能会改变 PyMysql 的一些内部配置 - 它只是没有多大意义。

使用 f 字符串或

.format
字符串方法,检索到的对象在语义上更加正确,更易于操作,并且(几乎)轻松转换回字符串。

“简单转换”为字符串的例外是日期时间对象,但是一旦您了解以下内容,它又变得更加实用:日期时间 Python 对象接受

datetime.strftime
方法中可用的相同字段指示符作为 f 中的格式化指示符-字符串(或
str.format
调用):

In [8]: x = datetime.now()

In [9]: f"{x}"
Out[9]: '2024-06-04 19:56:53.551617'

In [10]: f"{x:%Y-%m-%d}"
Out[10]: '2024-06-04'

[WIP - 我会看看是否有办法绕过 pymysql 中的转换,但可能你更擅长使用对象]

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.