使用Python实现Android SQLite的增删改查操作

SQLite是一种轻量级的数据库,它可用于Android应用程序的本地数据存储。Python是一种高级编程语言,它可以与SQLite数据库进行交互。在本文中,我们将探讨如何使用Python在Android应用程序中执行SQLite的增删改查操作。

一、准备工作

在开始编写Python代码之前,请确保已经安装了Python和Android Studio。然后,您需要在Android Studio中创建一个新的Android项目。在项目中,创建一个名为“sqlite.db”的数据库,用于存储我们的数据。方便起见,我们将在应用程序的asset文件夹中添加一个用于创建数据库表的SQL文件。

CREATE TABLE IF NOT EXISTS student (
        id      INTEGER PRIMARY KEY AUTOINCREMENT,
        name    TEXT,
        gender  TEXT,
        age     INTEGER
);

本文中,我们将使用Python与Android应用程序进行交互。我们将使用一个名为“Pyjnius”的Python库来实现这个目的。在运行Python代码之前,请确保已经成功安装了Pyjnius库。

二、连接数据库

在Python中连接SQLite数据库,需要首先导入Sqlite3库。然后,使用以下代码连接数据库:

import sqlite3

conn = sqlite3.connect('/path/to/sqlite.db')

上述代码中,我们使用了Sqlite3库中的connect()方法连接了我们的SQLite数据库。在其中,/path/to/sqlite.db表示我们的数据库存储在Android文件系统下的某个位置。

三、封装增删改查操作

以下代码定义了一个DatabaseHelper类,该类封装了Python中SQLite的增删改查操作。它包含insert(),delete(),update()和select()方法,分别用于插入、删除、更新和查询数据库中的数据。实现如下:

import sqlite3

class DatabaseHelper(object):

    def __init__(self, db_path):
        self.conn = sqlite3.connect(db_path)

    def insert(self, table_name, columns_values_dict):
        try:
            cursor = self.conn.cursor()
            columns = ', '.join(columns_values_dict.keys())
            values_template = ', '.join(['?'] * len(columns_values_dict))
            query = f'INSERT INTO {table_name} ({columns}) VALUES ({values_template})'
            result = cursor.execute(query, tuple(columns_values_dict.values()))
            self.conn.commit()
            return result.lastrowid
        except Exception as e:
            self.conn.rollback()
            raise e

    def delete(self, table_name, id):
        try:
            cursor = self.conn.cursor()
            query = f'DELETE FROM {table_name} WHERE id={id}'
            result = cursor.execute(query)
            self.conn.commit()
            return result.rowcount
        except Exception as e:
            self.conn.rollback()
            raise e

    def update(self, table_name, columns_values_dict, id):
        try:
            cursor = self.conn.cursor()
            sets = [f'{column}=?' for column in columns_values_dict.keys()]
            values = list(columns_values_dict.values())
            values.append(id)
            sets = ', '.join(sets)
            query = f'UPDATE {table_name} SET {sets} WHERE id=?'
            result = cursor.execute(query, tuple(values))
            self.conn.commit()
            return result.rowcount
        except Exception as e:
            self.conn.rollback()
            raise e

    def select(self, table_name, columns='*', id=None):
        try:
            cursor = self.conn.cursor()
            if id is None:
                query = f'SELECT {columns} FROM {table_name}'
                result = cursor.execute(query).fetchall()
            else:
                query = f'SELECT {columns} FROM {table_name} WHERE id={id}'
                result = cursor.execute(query).fetchone()

            return list(result)
        except Exception as e:
            self.conn.rollback()
            raise e

上述代码中,我们定义了一个名为DatabaseHelper的类,其中包含了我们需要的四种操作:insert,delete,update和select。对于每种操作,我们都实现了处理异常信息的逻辑。

四、使用封装的操作数据库

在我们实现了数据库操作的类后,接下来,我们需要实例化DatabaseHelper类,并使用其中的方法操作数据库。

import os
from jnius import autoclass
from .database_helper import DatabaseHelper

activity = autoclass('org.kivy.android.PythonActivity').mActivity
path = os.path.join(activity.getFilesDir().getAbsolutePath(), 'sqlite.db')

db = DatabaseHelper(path)

以上代码实例化了DatabaseHelper类,然后获取了数据库存储的路径,并将其传递给了DatabaseHelper类的构造函数。接下来,我们将演示如何使用封装后的操作:

1、插入数据:

table_name = 'student'
columns_values_dict = {"name": "Alice", "gender": "female", "age": 17}
result = db.insert(table_name, columns_values_dict)

2、删除数据:

table_name = 'student'
id = 1
result = db.delete(table_name, id)

3、更新数据:

table_name = 'student'
columns_values_dict = {"name": "Bob", "gender": "male", "age": 18}
id = 2
result = db.update(table_name, columns_values_dict, id)

4、查询数据:

table_name = 'student'
columns = 'name, gender, age'
id = 3
result = db.select(table_name, columns, id)

总结

在本文中,我们学习了如何使用Python在Android应用程序中执行SQLite的增删改查操作。我们定义了一个DatabaseHelper类,并封装了四种操作:insert,delete,update和select。最后,我们演示了如何实例化DatabaseHelper类,并使用其中的方法进行数据库操作。

原创文章,作者:WTPXH,如若转载,请注明出处:https://www.506064.com/n/324849.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
WTPXHWTPXH
上一篇 2025-01-13 13:23
下一篇 2025-01-13 13:23

相关推荐

  • Python周杰伦代码用法介绍

    本文将从多个方面对Python周杰伦代码进行详细的阐述。 一、代码介绍 from urllib.request import urlopen from bs4 import Bea…

    编程 2025-04-29
  • Python列表中负数的个数

    Python列表是一个有序的集合,可以存储多个不同类型的元素。而负数是指小于0的整数。在Python列表中,我们想要找到负数的个数,可以通过以下几个方面进行实现。 一、使用循环遍历…

    编程 2025-04-29
  • 如何查看Anaconda中Python路径

    对Anaconda中Python路径即conda环境的查看进行详细的阐述。 一、使用命令行查看 1、在Windows系统中,可以使用命令提示符(cmd)或者Anaconda Pro…

    编程 2025-04-29
  • Python计算阳历日期对应周几

    本文介绍如何通过Python计算任意阳历日期对应周几。 一、获取日期 获取日期可以通过Python内置的模块datetime实现,示例代码如下: from datetime imp…

    编程 2025-04-29
  • Python中引入上一级目录中函数

    Python中经常需要调用其他文件夹中的模块或函数,其中一个常见的操作是引入上一级目录中的函数。在此,我们将从多个角度详细解释如何在Python中引入上一级目录的函数。 一、加入环…

    编程 2025-04-29
  • 蝴蝶优化算法Python版

    蝴蝶优化算法是一种基于仿生学的优化算法,模仿自然界中的蝴蝶进行搜索。它可以应用于多个领域的优化问题,包括数学优化、工程问题、机器学习等。本文将从多个方面对蝴蝶优化算法Python版…

    编程 2025-04-29
  • python强行终止程序快捷键

    本文将从多个方面对python强行终止程序快捷键进行详细阐述,并提供相应代码示例。 一、Ctrl+C快捷键 Ctrl+C快捷键是在终端中经常用来强行终止运行的程序。当你在终端中运行…

    编程 2025-04-29
  • Python程序需要编译才能执行

    Python 被广泛应用于数据分析、人工智能、科学计算等领域,它的灵活性和简单易学的性质使得越来越多的人喜欢使用 Python 进行编程。然而,在 Python 中程序执行的方式不…

    编程 2025-04-29
  • Python清华镜像下载

    Python清华镜像是一个高质量的Python开发资源镜像站,提供了Python及其相关的开发工具、框架和文档的下载服务。本文将从以下几个方面对Python清华镜像下载进行详细的阐…

    编程 2025-04-29
  • Python字典去重复工具

    使用Python语言编写字典去重复工具,可帮助用户快速去重复。 一、字典去重复工具的需求 在使用Python编写程序时,我们经常需要处理数据文件,其中包含了大量的重复数据。为了方便…

    编程 2025-04-29

发表回复

登录后才能评论