Python之Sqlite3数据库基本操做

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

涉及知识点

  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的相关核心代码,以下所示:数据库

建立数据表数组

 1 def createDb():
 2     """建立db数据表"""
 3     sql = '''
 4     create table person (
 5     id integer primary key  autoincrement  not null,
 6     name varchar not null,
 7     age integer
 8     )
 9     '''
10     executeSql(sql)
View Code

插入语句ide

1 def insertData(name, age):
2     """插入数据"""
3     sql = 'insert into person (name,age)values(?,?)'
4     executeSql(sql, (name, age))
View Code

update语句函数

1 def updateData(id, name, age):
2     """经过ID进行修改语句"""
3     sql = 'update  person set name=?,age =?  where id=?'
4     executeSql(sql, (name, age, id))
View Code

delete语句学习

1 def deleteData(id):
2     """经过ID删除数据"""
3     sql = 'delete from person  where id=?'
4     executeSql(sql, (id,))
View Code

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

 1 def executeSql(sql, *args):
 2     """执行更新语句"""
 3     conn = sqlite3.connect(dbfile)
 4     cur = conn.cursor()
 5     try:
 6         cur.execute(sql, *args)
 7         conn.commit()
 8         print('执行成功,影响行数:', cur.rowcount)
 9     except Exception as e:
10         conn.rollback()
11         print(e)
12         print('执行失败')
13     finally:
14         cur.close()
15         conn.close()
View Code

查询语句(无条件查询)ui

1 def queryData():
2     """查询语句"""
3     sql = 'select id,name,age from person '
4     executeQuerySql(sql)
View Code

查询语句(条件查询)spa

1 def queryDataById(id):
2     """经过id进行查询"""
3     sql = 'select id,name,age from person where id = ? '
4     executeQuerySql(sql, (id,))
View Code

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

 1 def executeQuerySql(sql, *args):
 2     """执行查询语句,可带参数"""
 3     conn = sqlite3.connect(dbfile)
 4     cur = conn.cursor()
 5     try:
 6         cur.execute(sql, *args)
 7         persons = cur.fetchall()
 8         for p in persons:
 9             print('当前行信息以下:')
10             print(p)  # 返回的是一个元组tuple
11         print('查询成功')
12     except Exception as e:
13         print(e)
14         print('查询失败')
15     finally:
16         cur.close()
17         conn.close()
View Code

 关于本例子的执行源码,可经过连接进行下载,以下所示:

源码连接

Python参数传递方式

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

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

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

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

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

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

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

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

1 def fun4(*name):
2     print(type(name))
3     print(name)
4 
5 
6 fun4((1, 2, 3))
View Code

字典传递,虽然经过元组能够传递多个参数,但若是须要经过键值来获取参数内容时,字典则更加方便,以下所示:

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

参数传递注意事项:

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

备注

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

相关文章
相关标签/搜索