Python学习笔记:sqlite3(sqlite数据库操做)

对于数据库的操做,Python中能够经过下载一些对应的三方插件和对应的数据库来实现数据库的操做,可是这样难免使得Python程序变得更加复杂了。若是只是想要使用数据库,又不想下载一些没必要要的插件和辅助软件,可使用Python内置模块sqlite3。html

sqlite3是Python对于sqlite数据库的支持,模块名称之因此是sqlite3而不是sqlite,是由于sqlite的版本中最流行的就是3.x的版本。sql

sqlite数据库教程:http://www.runoob.com/sqlite/sqlite-intro.html数据库

sqlite GUI软件SQLiteSpy:https://www.yunqa.de/delphi/products/sqlitespy/index,数据库的可视化管理工具备不少,你也能够选择其余的软件,可是SQLiteSpy这个软件免费并且很是小,对于日常的sqlite数据库操做其实已经能够知足了。工具

 

经常使用API(方括号中为可选参数)fetch

  • conn = sqlite3.connect(database[, optional_params]):链接(磁盘上的)数据库database,database是一个数据库文件,能够是相对路径,也能够是绝对路径,若是这个文件存在且链接成功则返回一个链接对象;若是文件不存在,则自动建立一个数据库文件。
  • csr = conn.cursor([optional_params]):获取去链接对象的游标对象,游标能够理解为存放SQL结果的缓冲区,也能够理解为指向SQL结果的光标。
  • csr.execute(sql[, optional_params]):执行SQL语句,返回值也是一个cursor游标对象。SQL语句可使用问号“?”做为占位符,例如:csr.execute('INSERT INTO STUDENTS VALUES(?, ?, ?)', (1, 'Jason', 18)) ,其中表students有三个字段ID、NAME和AGE。
  • csr.executemany(sql, seq_of_parameters):对seq_of_parameters中的全部数据执行同一个sql。例如须要向数据库中插入大量数据时,sql中可使用占位符,要插入的数据放入seq_of_parameters中。
  • conn.commit():提交事务。若是以前对数据库进行了修改,好比插入操做,就须要先commit()。
  • conn.close():关闭数据库链接。关闭数据库链接以前,若是对数据库进行了修改,就须要先commit,关闭的时候不会自动commit的,若是没有commit,那么全部的修改都会被丢失。
  • csr.fetchone():获取查询结果集中的下一行,返回的是一个表示一行数据的元组,若是没有数据则返回None。
  • csr.fetchmany(size):获取查询结果集中的指定大小的下一组数据,默认返回一行数据(不一样与fetchone,返回的是列表,而列表中只有一个元组),若是没有数据则返回空列表。
  • csr.fetchall():返回查询结果集中的所有数据。

简单示例:spa

# -*- coding:utf-8 -*-
import sqlite3

# 数据库文件
db = 'sqlite_test.db'

# 链接数据库,若是没有则建立数据库
conn = sqlite3.connect(db)

# 获取游标
csr = conn.cursor()

# 建立表STUDENTS
csr.execute('CREATE TABLE STUDENTS'
            '(ID INT PRIMARY KEY NOT NULL,'
            'NAME TEXT NOT NULL,'
            'AGE INT NOT NULL);')

# 插入一条数据
csr.execute('INSERT INTO STUDENTS VALUES(1, "Jason", 18)')

# 插入语句sql,并使用占位符
insert_sql = 'INSERT INTO STUDENTS VALUES(?, ?, ?)'

# 须要批量插入的数据
students_info = [(2, 'Mickle', 20),
                 (3, 'Mary', 30),
                 (4, 'Bob', 40)]

# 批量插入数据
csr.executemany(insert_sql, students_info)

# 提交事务
conn.commit()

# 获取一行数据
# datas = csr.execute('SELECT * FROM STUDENTS;').fetchone()

# 获取2行数据
# datas = csr.execute('SELECT * FROM STUDENTS;').fetchmany(2)

# 获取所有数据
# datas = csr.execute('SELECT * FROM STUDENTS;').fetchall()

# 关闭数据库链接
conn.close()

 

经常使用SQL插件

sqlite的更多知识能够参考笔记开始的sqlite教程。code

查询数据库中的表:sqlite

SELECT name FROM sqlite_master WHERE type='table';htm

查询表中的字段信息:

PRAGMA TABLE_INFO([table_name]);

 使用分享:

一、SQL中的表名或者字段名带有特殊符号时应该使用嵌套引号括起来,这些特殊符号多是语法的一部分,应该使用嵌套引号表名它是一个总体,特别是使用格式化字符串时别忘了使用引号嵌套。如包含点号:'SELECT "aa.bb" FROM xxx;'或者'SELECT xxx FROM "%s";' % 'ccc.ddd.eee'

相关文章
相关标签/搜索