Python基础之Sqlite3数据库基本操作

简介: Python基础之Sqlite3数据库基本操作

在一些小的应用中,难免会用到数据库,Sqlite数据库以其小巧轻便,无需安装,移植性好著称,本文主要以一个简单的小例子,简述Python在Sqlite数据库方面的应用,仅供学习分享使用,如有不足之处,还请指正。

涉及知识点

  1. sqlite3是Python集成的内置类库,提供Python操作sqlite3的相关接口。
  2. sqlite3.connect(dbfile) 创建数据库连接,返回一个连接对象
  3. conn.cursor() 创建游标对象,通过返回的cursor对象,执行相应的SQL语句。
  4. cur.execute(sql, *args) 执行语句
  5. conn.commit() 提交执行的结果到数据库
  6. conn.rollback() 回退执行的结果
  7. cur.close() 关闭cursor对象
  8. conn.close() 关闭连接对象

基础操作代码

关于Python操作sqlite3的相关核心代码,如下所示:

创建数据表

def createDb():
    """创建db数据表"""
    sql = '''
    create table person (
    id integer primary key  autoincrement  not null,
    name varchar not null,
    age integer
    )
    '''
    executeSql(sql)

插入语句

def insertData(name, age):
    """插入数据"""
    sql = 'insert into person (name,age)values(?,?)'
    executeSql(sql, (name, age))

update语句

def updateData(id, name, age):
    """通过ID进行修改语句"""
    sql = 'update  person set name=?,age =?  where id=?'
    executeSql(sql, (name, age, id))

delete语句

def deleteData(id):
    """通过ID删除数据"""
    sql = 'delete from person  where id=?'
    executeSql(sql, (id,))

上面的语句都调用统一的executeSql方法,如下所示:

def executeSql(sql, *args):
    """执行更新语句"""
    conn = sqlite3.connect(dbfile)
    cur = conn.cursor()
    try:
        cur.execute(sql, *args)
        conn.commit()
        print('执行成功,影响行数:', cur.rowcount)
    except Exception as e:
        conn.rollback()
        print(e)
        print('执行失败')
    finally:
        cur.close()
        conn.close()

查询语句(无条件查询)

def queryData():
    """查询语句"""
    sql = 'select id,name,age from person '
    executeQuerySql(sql)

查询语句(条件查询)

def queryDataById(id):
    """通过id进行查询"""
    sql = 'select id,name,age from person where id = ? '
    executeQuerySql(sql, (id,))

上面的查询语句,都调用统一的executeQuerySql方法,如下所示:

def executeQuerySql(sql, *args):
    """执行查询语句,可带参数"""
    conn = sqlite3.connect(dbfile)
    cur = conn.cursor()
    try:
        cur.execute(sql, *args)
        persons = cur.fetchall()
        for p in persons:
            print('当前行信息如下:')
            print(p)  # 返回的是一个元组tuple
        print('查询成功')
    except Exception as e:
        print(e)
        print('查询失败')
    finally:
        cur.close()
        conn.close()

关于本例子的执行源码,可通过链接进行下载,如下所示:

源码链接

Python参数传递方式

Python的参数传递一共有以下五种(位置参数、默认参数、变长参数、关键字参数、命名关键字参数)

位置传递

位置传递,即参数按照定义的位置及顺序进行传递,如下所示:

# 位置传递实例:
def fun1(a, b, c):
    return a + b + c
print(fun1(1, 2, 3))

关键字传递

关键字传递,即通过传递的参数的名称进行识别。

# 关键字传递
def fun2(a, b, c):
    return a + b + c
print(fun2(1, c=3, b=2))

默认值参数传递

默认值参数传递,即给某些参数设置一个默认值,如果不传则读取默认值。

# 默认值传递
def fun3(a, b=2, c=3):
    return a + b + c
print(fun3(a=1))

元组传递

元组传递,在定义函数时,我们有时候并不知道调用的时候会传递多少个参数。元组参数来进行参数传递会非常有用。如下所示:

def fun4(*name):
    print(type(name))
    print(name)
fun4((1, 2, 3))

字典传递

字典传递,虽然通过元组可以传递多个参数,但如果需要通过键值来获取参数内容时,字典则更加方便,如下所示:

def fun5(a, b, **kwargs):
    print(type(kwargs))  # <class 'dict'>
    print(a, b, kwargs)
fun5(2, 3, name='Alan.hsiang', age=23)

参数传递注意事项:

  • 不可变参数“通过值”进行传递
  • 像整数和字符串这样的对象是不可变对象,它们通过对象引用而不是拷贝进行传递的,但是因为无论如何都不可能在原处改变不可变对象,实际的效果就很像创建了一份拷贝
  • 可变对象是通过“指针”进行传递的
  • 列表和字典这样的对象也是通过对象引用进行传递的,这一点与C语言使用指针传递数组很相似,可变对象能够在函数内部进行原处的改变,这一点和C数组很像
  • 这些参数在书写时要遵循一定的顺序即:位置参数、默认参数、变长参数、关键字参数、命名关键字参数

备注

业精于勤,荒于嬉;行成于思,毁于随!!!

相关文章
|
2月前
|
关系型数据库 MySQL 数据库连接
python脚本:连接数据库,检查直播流是否可用
【10月更文挑战第13天】本脚本使用 `mysql-connector-python` 连接MySQL数据库,检查 `live_streams` 表中每个直播流URL的可用性。通过 `requests` 库发送HTTP请求,输出每个URL的检查结果。需安装 `mysql-connector-python` 和 `requests` 库,并配置数据库连接参数。
136 68
|
28天前
|
关系型数据库 MySQL 数据库
Python处理数据库:MySQL与SQLite详解 | python小知识
本文详细介绍了如何使用Python操作MySQL和SQLite数据库,包括安装必要的库、连接数据库、执行增删改查等基本操作,适合初学者快速上手。
194 15
|
2月前
|
弹性计算 数据管理 数据库
从零开始构建员工管理系统:Python与SQLite3的完美结合
本文介绍如何使用Python和Tkinter构建一个图形界面的员工管理系统(EMS)。系统包括数据库设计、核心功能实现和图形用户界面创建。主要功能有查询、添加、删除员工信息及统计员工数量。通过本文,你将学会如何结合SQLite数据库进行数据管理,并使用Tkinter创建友好的用户界面。
81 2
从零开始构建员工管理系统:Python与SQLite3的完美结合
|
2月前
|
存储 SQL 数据库
数据库知识:了解SQLite或其他移动端数据库的使用
【10月更文挑战第22天】本文介绍了SQLite在移动应用开发中的应用,包括其优势、如何在Android中集成SQLite、基本的数据库操作(增删改查)、并发访问和事务处理等。通过示例代码,帮助开发者更好地理解和使用SQLite。此外,还提到了其他移动端数据库的选择。
54 8
|
3月前
|
关系型数据库 MySQL 数据处理
探索Python中的异步编程:从asyncio到异步数据库操作
在这个快节奏的技术世界里,效率和性能是关键。本文将带你深入Python的异步编程世界,从基础的asyncio库开始,逐步探索到异步数据库操作的高级应用。我们将一起揭开异步编程的神秘面纱,探索它如何帮助我们提升应用程序的性能和响应速度。
|
3月前
|
Web App开发 SQL 数据库
使用 Python 解析火狐浏览器的 SQLite3 数据库
本文介绍如何使用 Python 解析火狐浏览器的 SQLite3 数据库,包括书签、历史记录和下载记录等。通过安装 Python 和 SQLite3,定位火狐数据库文件路径,编写 Python 脚本连接数据库并执行 SQL 查询,最终输出最近访问的网站历史记录。
52 4
|
3月前
|
存储 缓存 关系型数据库
sqlite 数据库 介绍
sqlite 数据库 介绍
63 0
|
3月前
|
SQL 机器学习/深度学习 数据采集
SQL与Python集成:数据库操作无缝衔接2a.bijius.com
Python与SQL的集成是现代数据科学和工程实践的核心。通过有效的数据查询、管理与自动化,可以显著提升数据分析和决策过程的效率与准确性。随着技术的不断发展,这种集成的应用场景将更加广泛,为数据驱动的创新提供更强大的支持。
|
15天前
|
存储 Oracle 关系型数据库
数据库传奇:MySQL创世之父的两千金My、Maria
《数据库传奇:MySQL创世之父的两千金My、Maria》介绍了MySQL的发展历程及其分支MariaDB。MySQL由Michael Widenius等人于1994年创建,现归Oracle所有,广泛应用于阿里巴巴、腾讯等企业。2009年,Widenius因担心Oracle收购影响MySQL的开源性,创建了MariaDB,提供额外功能和改进。维基百科、Google等已逐步替换为MariaDB,以确保更好的性能和社区支持。掌握MariaDB作为备用方案,对未来发展至关重要。
39 3
|
15天前
|
安全 关系型数据库 MySQL
MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!
《MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!》介绍了MySQL中的三种关键日志:二进制日志(Binary Log)、重做日志(Redo Log)和撤销日志(Undo Log)。这些日志确保了数据库的ACID特性,即原子性、一致性、隔离性和持久性。Redo Log记录数据页的物理修改,保证事务持久性;Undo Log记录事务的逆操作,支持回滚和多版本并发控制(MVCC)。文章还详细对比了InnoDB和MyISAM存储引擎在事务支持、锁定机制、并发性等方面的差异,强调了InnoDB在高并发和事务处理中的优势。通过这些机制,MySQL能够在事务执行、崩溃和恢复过程中保持
43 3