20.4.5 表格中的文件

在 MySQL 中,表可能包含传统的关系数据、JSON 值或两者。通过将文档存储在具有本机 JSON数据类型的列中,您可以将传统数据与 JSON 文档结合起来。

本节中的示例使用模式中的城市表 world_x

city 表说明

city 表有五个列(或字段)。

+----------------+------------+--------+--------+---- -----+--------------------+
| 领域 | 类型 | 空 | 键 | 默认 | 额外 |
+----------------+------------+--------+--------+---- -----+--------------------+
| 编号 | 整数(11) | 否 | 优先级 | 空 | 自动递增 |
| 名称 | 字符(35) | 否 | | | |
| 国家代码 | 字符(3) | 否 | | | |
| 地区 | 字符(20) | 否 | | | |
| 资讯 | JSON | 是 | | 空 | |
+----------------+------------+--------+--------+---- -----+--------------------+

插入记录

要将文档插入表的列,请以 values()正确的顺序将格式良好的 JSON 文档传递给该方法。在以下示例中,文档作为最终值被传递到信息列中。

mysql-py> db.city.insert().values(
None, "San Francisco", "USA", "California", '{"Population":830000}')

选择一条记录

您可以发出带有搜索条件的查询,该搜索条件计算表达式中的文档值。

mysql-py> db.city.select(["ID", "Name", "CountryCode", "District", "Info"]).where(
"CountryCode = :country and Info->'$.Population' > 1000000").bind(
'country', 'USA')
+------+----------------+-------------+----------------+-----------------------------+
| ID   | Name           | CountryCode | District       | Info                        |
+------+----------------+-------------+----------------+-----------------------------+
| 3793 | New York       | USA         | New York       | {"Population": 8008278}     |
| 3794 | Los Angeles    | USA         | California     | {"Population": 3694820}     |
| 3795 | Chicago        | USA         | Illinois       | {"Population": 2896016}     |
| 3796 | Houston        | USA         | Texas          | {"Population": 1953631}     |
| 3797 | Philadelphia   | USA         | Pennsylvania   | {"Population": 1517550}     |
| 3798 | Phoenix        | USA         | Arizona        | {"Population": 1321045}     |
| 3799 | San Diego      | USA         | California     | {"Population": 1223400}     |
| 3800 | Dallas         | USA         | Texas          | {"Population": 1188580}     |
| 3801 | San Antonio    | USA         | Texas          | {"Population": 1144646}     |
+------+----------------+-------------+----------------+-----------------------------+
9 rows in set (0.01 sec)

相关信息