• home
  • about
  • 全ての投稿
  • ソフトウェア・ハードウェアの設定のまとめ
  • 分析関連のまとめ
  • ヘルスケア関連のまとめ
  • 生涯学習関連のまとめ

peewee(JSON1拡張)

date: 2023-12-28 excerpt: python peewee(JSON1拡張)の使い方

tag: databaseormpythonpeewee


python peewee(JSON1拡張)の使い方

概要

  • peeweeでplayhouse.sqlite_extを使うとJSON1拡張が使えるようになる

インストール

$ pip install peewee

使い方

モデルの定義

from peewee import *
from playhouse.sqlite_ext import *

db = SqliteDatabase('my_database.db')

class Item(Model):
    name = CharField()
    data = JSONField()

    class Meta:
        database = db

db.connect()
db.create_tables([Item])

# サンプルデータの挿入
items = [
    {'name': 'Item A', 'data': {'color': 'red', 'price': 10.99, 'tags': ['new', 'hot']}},
    {'name': 'Item B', 'data': {'color': 'blue', 'price': 8.99, 'tags': ['sale', 'cool']}},
    {'name': 'Item C', 'data': {'color': 'green', 'price': 12.49, 'tags': ['eco', 'fresh']}}
]

for item in items:
    Item.create(**item)

JSON1拡張を用いたクエリ

# 'color'が'red'のアイテムを検索
red_items = Item.select().where(Item.data['color'] == 'red')
for item in red_items:
    print(item.name, item.data)

# 'tags'に'eco'を含むアイテムを検索
eco_items = Item.select().where(Item.data['tags'].contains('eco'))
for item in eco_items:
    print(item.name, item.data)

# 'Item A'の価格を更新
item = Item.get(Item.name == 'Item A')
item.data['price'] = 11.99  # 価格を更新
item.save()  # 変更をデータベースに保存

# 価格が10ドル以上のアイテムを検索
expensive_items = Item.select().where(Item.data['price'] >= 10)
for item in expensive_items:
    print(item.name, item.data)


databaseormpythonpeewee Share Tweet