Python-Tinydb データベースの詳細説明

目次

データベース

Tinydb 

Tinydb の使用

インストール

輸入

データベースを作成する

テーブルを作成

増加

消去

小切手

変化する

その他の機能

やっと


データベース

データベースはデータが保存される場所であり、現在私たちが生活の中でほぼ毎瞬間行っていることがその役割を果たしている可能性があります。今日は、初心者向けでとても使いやすい Tinydb データベースを紹介します。

Tinydb 

データベースといえば、比較的一般的なmysqlやmogodbを思い浮かべる方が多いと思いますが、初心者には少し難しいTinydbは比較的シンプルで使いやすいデータベースで、合計1,800行のPythonコードしか使用していません、外部ライブラリに依存せず、保存します メソッドは主にjsonファイルであり、Pythonの辞書タイプです。

Tinydb の使用

インストール

コマンド入力、

pip install tinydb

Enter キーを押して、インストールが完了するまで待ちます。

輸入

from tinydb import TinyDB, Query, where

次の TinyDB、Query、および where はすべて一般的に使用される関数であり、後で説明します。

データベースを作成する

今回は、TinyDB()関数を使用してデータベースを作成し、変数に保存します。

そのような:

db = TinyDB('db.json')

ここで T と DB の両方を大文字にする必要があることに注意してください。そうしないと、エラーが報告されます。

主な形式は次のとおりです。

变量 = TinyDB('数据库名.json')

このうち、json はファイルのサフィックス名であり、変数は後でデータベース変数と呼ばれます。

テーブルを作成

テーブルはテーブルとして視覚化できます。

テーブルを作成するステートメントの例は次のとおりです。

login_table = login_db.table("login")

おおよその形式は次のとおりです。

table变量名 = 数据库变量名("table名")

増加

データベースの主な機能は、追加、削除、確認、および変更です. では、追加の方法を学びましょう.

追加はデータの追加、つまりデータの挿入です。

insert()関数を使用してデータを挿入します。形式は次のとおりです。

table变量名.insert({键:值,键:值...})

たとえば、データベースは次のようになります

名前
シャオ・ミン 25
李華 23

この時点で、データの一部を挿入したいと考えています。名前は Xiaohong、年齢は 24 です。次のように記述できます。

table变量名.insert({"name":"小红","age":22})

テーブル変数名は事前に定義する必要があります。

消去

主に削除機能を使用します。

ただし、最初に次の形式でクエリ変数を作成します。

查询变量名 = Quary()

上記のデータベースを引き続き使用します。たとえば、年齢が 24 歳以上のデータを削除する場合は、次のように記述できます。

table变量.remove(查询变量名.age>=24)

なぜクエリ変数を使用してデータを削除するのか理解できない人もいるでしょう。

年齢が 24 歳以上であるため、age 属性が 24 歳以上のデータを見つける必要があるため、検索を使用します。

小切手

「削除」では、search() 関数で検索するだけでよいクエリ変数を作成しました。

数据变量名 = table变量名.search(查询变量名.属性 ...)

同じ例ですが、24 歳以上のデータを見つけるには、次のように記述できます。

data = table变量名.search(查询变量名.age >= 24)

変化する

実際には変更は update であり、 update() 関数は update に使用されます. たとえば、Xiaohong の年齢を 100 に変更する場合は、次のように記述できます。

table变量.update({"age":100},where("name")=="小红")

Xiaohong: 何してるの~痛い~

その他の機能

データベース内のすべてのコンテンツを取得するには、all() 関数を使用します。

data = table名.all()

この時点で、基本的な機能はすべて終了しました。例を見てみましょう。

これは主に Tinydb を使用してデータを保存するシンプルなレストラン システムです。

import sys
import time
from tinydb import TinyDB, Query, where
import os
import random

flag = 0

if not os.path.exists("restaurant"):
    os.makedirs("restaurant")

# ------------------------------------ #

login_db = TinyDB("restaurant/login.json") #存储登录和注册信息
login_table = login_db.table("login")

# ----------------------------------- #

dish_info_db = TinyDB("restaurant/dish_info.json") #存储菜品信息
dish_info_table = dish_info_db.table("dish_info")

# ------------------------------------ #

pingjia_db = TinyDB("restaurant/pingjia.json")
pingjia_table = pingjia_db.table("pingjia")

# ----------------------------------- #


os.system("cls")
print("""-------欢迎光临----------
        1.登录 
        2.注册
        3.管理员登录
------------------------   """)
choose = int(input("请输入:"))
if choose == 1:
    name = input("请输入用户名:")
    search_name = Query()
    # 查询一个用户名为 name 的数据
    query_data = login_table.search(search_name.name == name)
    if query_data == []:
        print("无此用户名!")
    password = int(input("请输入密码(纯数字):"))
    if password == query_data[0]["password"]:
        submit_ = query_data[0]["submit"]
        user_name = name
        print("登录成功!")
    elif password != query_data[0]["password"]:
        print("密码错误!")
elif choose == 2:
    name = input("请输入用户名:")
    search_name_2 = Query()
    query_data_2 = login_table.search(search_name_2.name == name)
    if query_data_2 == []:
        password = int(input("请输入密码(纯数字):"))
        login_table.insert({"name":name, "password":password, "submit":0})
        submit_ = 0
        user_name = name
        print("注册成功!")
    else:
        print("用户名已存在!")
elif choose == 3:
    name = input("输入管理员用户名:")
    password = int(input("输入管理员密码:"))
    if name == "root" and password == 123456:
        flag = 1
        print("登录成功!")
else:
    print("输入错误!")

# ------------------------------------------------------ #
if flag == 0:
    while True:
        os.system("cls")
        print(user_name, end=' ')
        if submit_ < 10:
            print("普通会员")
        elif submit_ >= 10 and submit_ <= 20:
            print("黄金会员")
        elif submit_ > 20:
            print("钻石会员")
        print("""-------------------
            1.点餐
            2.评价
            3.退出
            4.看评价
-------------------
                    """)
        op = int(input("请输入:")) 
        if op == 1:
            dish_info_query = Query()
            dish_info_list = dish_info_table.all()
            # print(dish_info_list)
            get_dish_dic = {}
            spend_dic = {}
            bag = []
            spend_yuan = 0
            while True:
                os.system("cls")
                for i in range(len(dish_info_list)):
                    print(str(i+1)+'.'+dish_info_list[i]["dish_name"]+"    "+str(dish_info_list[i]["dish_spend"])+"元")
                    get_dish_dic[i+1]=[dish_info_list[i]["dish_name"]]
                    spend_dic[i+1]=[dish_info_list[i]["dish_spend"]]
                # print(get_dish_dic)
                print(str(len(dish_info_list)+1)+".购物车")
                print(str(len(dish_info_list)+2)+".我点好了")
                print(str(len(dish_info_list)+3)+".放弃")
                op3 = int(input("请选择:"))
                if  op3 <= (len(dish_info_list)):
                    spend_yuan += int(spend_dic[op3][0])
                    bag.append(get_dish_dic[op3])
                    print("成功!")
                    os.system("pause")
                elif op3 == len(dish_info_list)+1:
                    print("\n购物车:")
                    for j in bag:
                        print(j)
                    os.system("pause")
                elif op3 == len(dish_info_list)+2:
                    os.system("cls")
                    dz = random.randint(75,100)
                    print("你获得一个"+str(dz/100)+"折优惠↓")
                    dz_=dz/100
                    os.system("pause")
                    os.system("cls")
                    # ----------- #
                    print("用户名:"+user_name)
                    print("价格:  原价"+str(spend_yuan)+"元   折后价"+str(int(spend_yuan*dz_))+"元")
                    print("你点的菜品:")
                    for z in bag:
                        print(z)
                    _pswd = int(input("输入密码以支付(输入0则放弃支付):"))
                    if _pswd == password:
                        print("提交成功!")
                        login_table.update({"submit": submit_+1}, where("name")==user_name)
                        submit_ += 1
                        # ----------------- #
                        os.system("pause")
                        break
                    elif _pswd == 0:
                        os.system("pause")
                        break
                    else:
                        print("密码错误!")
                        break
                    os.system("pause")
                elif op3 == len(dish_info_list)+3:
                    os.system("pause")
                    break
        elif op == 2:
            os.system("cls")
            pingjia_info = input("请输入评价内容:")
            pingjia_table.insert({"content":pingjia_info,"user":name, "time":time.strftime('%Y-%m-%d-%H_%M_%S',time.localtime(time.time()))})
        elif op == 3:
            sys.exit()
        elif op == 4:
            pingjia_list = pingjia_table.all() 
        for i in pingjia_list:
            print("评价人:"+str(i["user"]))
            print("评价内容:"+str(i["content"]))
            print("评价时间:"+str(i["time"]))
            print("\n\n")
            os.system('pause')
elif flag == 1:
    os.system("cls")
    print("管理员")
    print("""-------------------
        1.添加菜品
        2.查看评价
        3.查看用户
-------------------
                """)
    op1 = int(input("请输入:"))
    if op1 == 1:
        dish_name = input("请输入菜品名字:")
        dish_spend = int(input("请输入菜品价格:"))
        dish_info_table.insert({"dish_name":dish_name, "dish_spend":dish_spend})
        print("添加成功!")
    elif op1 == 2:
        pingjia_list = pingjia_table.all() 
        for i in pingjia_list:
            print("评价人:"+str(i["user"]))
            print("评价内容:"+str(i["content"]))
            print("评价时间:"+str(i["time"]))
            print("\n\n")
    elif op1 == 3:
        login_list_ = login_table.all()
        for i in login_list_:
            print("用户名       密码      下单次数")
            print(i["name"],end='     ')
            print(str(i["password"]),end='    ')
            print(str(i["submit"]))

やっと

このようにして、記事全体が完成します。とてもシンプルですか?質問があればコメントしてください。

次回予告:

\int_{-\pi}^{\pi}\sin×dx

Python を使用して積分を見つけます。

バイバイ~ウェルカム・サンリエン~

おすすめ

転載: blog.csdn.net/m0_64036070/article/details/127164627