使用Python完成Django内置数据库SQLite的创建、增删改

1. 创建数据库表创建数据库表需要明确表名、主键以及数据的类型def create_table(): connect = sqlite3.connect('./djangoProject/db.sqlite3') cur = connect.cursor() try:...

1. 创建数据库表

创建数据库表需要明确表名、主键以及数据的类型

def create_table():

    connect = sqlite3.connect('./djangoProject/db.sqlite3')
    cur = connect.cursor()

    try: 
        sql = """
        CREATE TABLE hmt_sysdevicelatency (
            id integer primary key autoincrement,
            SysModelName varchar(100),
            Device varchar(100),
            Latency real,
            Energy real
        )
        ;"""
        cur.execute(sql)
        print("create table success")
        return True

    except OperationalError as o:
        print(str(o))

    except Exception as e:
        print(e)
        return False

    finally:
        cur.close()
        connect.close()

2. 插入数据

插入数据需要明确插入的表格、变量名以及需要插入的内容

def insert_data():

    connect = sqlite3.connect('./djangoProject/db.sqlite3')
    cur = connect.cursor()

    try:
        inset_sql = """
            insert into hmt_sysmodel 
            (id, SysModelName, Computation, Parameter, Storage, Latency, Energy, Accuracy, Infomation)
            values
            (
                1, "AlexNet", 738.68, 14.22, 54.26, -1, -1, -1, "Alexnet模型为8层深度网络, 由5个卷积层和3个全连接层构成, 不计LRN层和池化层. \
                    AlexNet中包含了几个比较新的技术点, 也首次在CNN中成功应用了ReLU、Dropout和LRN等Trick. 同时AlexNet也使用了GPU进行运算加速. \
                    AlexNet是2012年ImageNet竞赛冠军获得者Hinton和他的学生Alex Krizhevsky设计的, 该模型以很大\
                    的优势获得了2012年ISLVRC竞赛的冠军网络, 分类准确率由传统的 70%+提升到 80%+, 自那年之后, 深度学习开始迅速发展."
            );
        """
        cur.execute(inset_sql)

        print("insert success!")

        return True
    except Exception as e:
        print(str(e))
    finally:
        cur.close()
        connect.close()

3. 更新表内容

使用update来更改表内容,需要明确修改的变量和内容,并且确保插入数据不能冲突,通常需要根据主键来插入

def update_data():

    connect = sqlite3.connect('./djangoProject/db.sqlite3')

    try:
        update_sql = 'update hmt_sysdevicelatency set Latency = ? where SysModelName = ? and Device = ?;'
        datalist = [
            (
                24.1, "AlexNet", "Windows"
            ),
            (
                59.3, "MobileNet", "Windows"
            ),
            (
                38.8, "ResNet", "Windows"
            ),
            (
                24.3, "VGG", "Windows"
            ),
        ]

        connect.executemany(update_sql, datalist)

        connect.commit()

        print("update success!")

        return True
    except Exception as e:
        print(str(e))
    finally:
        connect.close()

4. 删除表格

使用drop语句来删除对应表格

def delete_table():

    connect = sqlite3.connect('./djangoProject/db.sqlite3')
    cur = connect.cursor()

    try:
        del_sql = """drop table hmt_sysmodel_latency;"""


        cur.execute(del_sql)
        print("delete table success")
        return True

    except OperationalError as o:
        print(str(o))

    except Exception as e:
        print(e)
        return False

    finally:
        cur.close()
        connect.close()

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
旺仔牛奶opo
旺仔牛奶opo

14 篇文章

作家榜 »

  1. 解弘艺 17 文章
  2. 高曾谊 16 文章
  3. 胡中天 14 文章
  4. 旺仔牛奶opo 14 文章
  5. LH 14 文章
  6. 罗柏荣 13 文章
  7. Panda-admin 13 文章
  8. 林晨 12 文章