- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有一个 peewee像这样的模型:
class User(peewee.Model):
name = peewee.CharField(unique=True)
some_json_data = peewee.CharField()
requested_at = peewee.DateTimeField(default=datetime.now())
我知道 peewee 不支持 MySQL 数据库的 JSONField,但无论如何,我认为如果我可以将它转换为字符串格式并保存到数据库,我可以按原样检索它。
比方说,这是我正在写入数据库的 JSONField:
[
{
'name': 'abcdef',
'address': 'abcdef',
'lat': 43176757,
'lng': 42225601
}
]
当我获取此 (JSONField) 数据时,输出如下所示:
u'[{u\'name\': u\'abcdef\', u\'address\': u\'abcdef\', u\'lat\': 43176757, u\'lng\': 42225601\'}]'
尝试加载一个 simplejson 会给我这样的错误:
JSONDecodeError: Expecting property name enclosed in double quotes: line 1 column 3 (char 2)
在将 json 数据输入到数据库之前,我已经尝试过 json 转储,看看是否可以正常工作,但我仍然没有运气。
我正在寻找涉及 peewee 的 custom field 的解决方案选项,我想坚持我的 MySQL。有人可以指导我吗?
最佳答案
您的代码中可能发生的情况是 Peewee 正在对值调用 str()
(或 unicode()
)而不是将其转储到 JSON,因此 Python 字符串表示正在保存到数据库中。要手动执行 JSON,只需 import json
然后在设置字段时调用 json.dumps(obj)
和 json.loads(db_value)
当你获取字段时。
看起来有一个为某些数据库(SQLite、PostgreSQL?)定义的 Peewee playhouse 扩展,它定义了一个 JSONField
类型——参见 JSONField docs here .
或者,我认为定义一个自动执行 json 加载/转储的自定义 JSONField
类型并不困难。 playhouse/kv.py 中有一个简单的例子:
class JSONField(TextField):
def db_value(self, value):
return json.dumps(value)
def python_value(self, value):
if value is not None:
return json.loads(value)
关于python - 用于 MySQL 的 Peewee ORM JSONField,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40553790/
问题 设置 JSONField 的最佳方法是什么?在 django 中拥有新列表的默认值? 上下文 有一个模型,其中一个字段是项目列表。在没有项目集的情况下,模型应该有一个空列表。 当前解决方案 fr
我有一个使用 bradjasper 的 django-jsonfield 的 Postgres 9.4/Django 1.8 数据库包裹。 (参见 https://github.com/bradjas
我想过滤一个 JSONField my_field,其中 JSON 不为空。在文档中有 has_key 和 has_any_key 方法,但我事先不知道可能的 key 。在 SQL 中它应该是这样的:
我的课是这样的: class Foo(models.Model): known_by = JSONField() 我的数据看起来像这样 { "known_by" : [
class Blog: values = JSONField(blank=True, default=list) [ { "id": 1, "value": "31" }
我在 Django 的模型上有一个 JSONField,称为 metadata。 该字段中的数据可能看起来像这样 { "vis": { "plots": [
我有一个 jsonfield foo = JSONField(default=list) 我想过滤查询集,以便 foo 有一些数据(不是空列表) 我试过了 MyModel.objects.filter
是否可以使用ILIKE(包含)运算符在词典列表中搜索一个键值?我的json字段看起来像这样: object = MyModel() object.json_data = [ {
使用 JSONField 时,内容会在读取值时自动从 JSON 解码为 python 对象。我有一个用例,我将字符串编码回 JSON 以嵌入到模板中。有什么方法可以从对象中获取原始 JSON 字符串吗
我们一直在使用来自 jsonfield 的 JSONField图书馆一段时间,但现在我们想使用 native PostgreSQL JSONField .所以我想知道是否可以更改现有模型的字段类型,保
我有这个模型: class InventoryItem(models.Model): size_range = JSONField(null=True) # JSONField in Dja
我从 Django 的文档中获取了以下示例,除了替换添加了一个键 '99': >>> Dog.objects.create(name='Rufus', data={ ... 'breed': 'lab
在我的应用程序中,有一个模型将配置存储在其字段之一中。该字段定义为 JSONField。我有一个严格的结构来定义该字段的内容应该是什么样子,但我正在努力寻找一种方法来序列化它以验证 API 请求中的数
我已经搜索了几天,试图找到一种 DRY 方法,使用 django 的内置验证和表单呈现从 JsonField 创建动态表单。我还没有找到一个包含 django 验证和渲染的解决方案,所以我想为此创建一
我通过使用 JSONField 在 mysql 中创建了一个 TextField (django) 类型的表。这就是我的模型的样子 from django.db import models from
我的模型中有一个 Json 字段 - class Product(models.Model): ... detailed_stock = JSONField(loa
这是模型: class ModelA(models.Model): field1 = models.CharField(max_length=100) field2 = models.
我正在尝试使用 Django + MySQL 为我的模型实现自定义 JSON 字段。这就是我的 models.py 的样子: from __future__ import unicode_litera
数据库是postgres 9.4在我的表中,我使用的是 JSONField class Item(models.Model): item = models.CharField(max_leng
对于经验丰富的 (Django) 开发人员来说,这可能是一个简单的问题。 我的项目的数据库是PostgreSQL。 我打算使用单个 protected 模型实例作为某些数据的集中存储。该实例将有一个
我是一名优秀的程序员,十分优秀!