SQLite

  SQLite是一个小型的关系型数据库,最大的特点是不需要单独的服务、零配置。Python的标准库中自带了SQLite数据库相应的驱动模块了。安装了Python,就可以直接使用SQLite数据库。
建立数据库连接对象

>>> import sqlite3    # 导入sqlite3模块
>>> conn = sqlite3.connect('mydb')    # 创建数据库连接对象

  通过上面的方式就创建了数据库的连接对象了,在sqlite3.connect('mydb')中,如果数据库mydb已经存在,就连接上它;如果不存在,则会自动创建一个并连接。注意,这里的路径是随意指定的。

建立游标对象
  和MySQL类似,建立了数据库连接后,还要建立游标对象,通过游标对象操作数据库

>>> cur = conn.cursor()    # 创建游标对象

通过游标对象操作数据库
  操作方法和MySQL类似。

# 创建数据表
>>> create_table = "create table stu(id int auto_increment primary key, name char(8) not null, class char(8) default null)"    # 创建数据库
>>> cur.execute(create_table)
<sqlite3.Cursor object at 0x10fae3b90>
>>> conn.commit()    # 执行提交
# 执行数据插入
>>> sql = "insert into stu(id, name, class) values(1, '张三', 'python3')"
>>> cur.execute(sql)
<sqlite3.Cursor object at 0x10fae3b90>
>>> conn.commit()
# 执行数据查询
>>> sql = "select * from stu"
>>> cur.execute(sql)
<sqlite3.Cursor object at 0x10fae3b90>
>>> cur.fetchall()    # 取出所有数据
[(1, '张三', 'python3')]    # 以列表的形式返回
>>> cur.fetchall()
[]
>>> sql = "select * from stu where class='python3'"
>>> cur.execute(sql)
<sqlite3.Cursor object at 0x10fae3b90>
>>> cur.fetchone()    # 一条一条的取出数据
(1, '张三', 'python3')
>>> cur.fetchone()
(2, '李四', 'python3')
# 执行数据更新
>>> sql = "update stu set name='张三2' where id=1"    # 数据更新
>>> cur.execute(sql)
<sqlite3.Cursor object at 0x10fae3b90>
>>> sql = "select * from stu"
>>> cur.execute(sql)
<sqlite3.Cursor object at 0x10fae3b90>
>>> cur.fetchall()
[(1, '张三2', 'python3'), (2, '李四', 'python3'), (3, '王舞', 'python4')]
# 执行数据删除
>>> sql = "delete from stu where id=3"    # 删除数据
>>> cur.execute(sql)
<sqlite3.Cursor object at 0x10fae3b90>

# 执行提交
>>> conn.commit()    # 事务提交,每执行一次数据库更改的操作,就执行提交

# 执行数据库关闭
>>> cur.close()
>>> conn.close()

SQLite中的占位符
  SQLite中的占位符和Python中有区别,是以?作为占位符。

>>> data = [(3, '王舞', 'python4'), (4, '曲奇', 'python5'), (5, '语言', 'python5')] #批量数据放入列表
>>> sql = "insert into stu(id, name, class) values(?, ?, ?)"    # ?作为占位符
>>> cur.executemany(sql, data)    # 执行批量插入
<sqlite3.Cursor object at 0x10fae3f10>
>>> conn.commit()

更多操作访问:https://docs.python.org/3.5/library/sqlite3.html

原文地址:https://www.cnblogs.com/wgbo/p/10112265.html