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()