关于SQLite

SQLite是一款轻量数据库,占用资源少,普遍应用于嵌入式系统中。

Python的SQLite操作

SQLite3可使用sqlite3模块与Python进行集成。Python 2.5以上的版本默认安装了该模块,因此不用额外进行安装。

常用API

  • sqlite3.connect(database [, timeout, other optional arguments])
    该API打开一个到SQLite数据库文件database的链接。如果数据库打开成功,则返回一个连接对象。
    如果给定的数据库名称不存在,则该调用将创建一个数据库。
  • connection.cursor([cursorClass])
    该API创建一个cursor,将在Python数据库编程中用到。
  • cursor.execute(sql [, optional parameters])
    执行一个SQL语句。该SQL语句可以被参数化(即使用占位符替代SQL文本)。
    例如:cursor.execute("insert into people values (?, ?)", (who, age))
  • cursor.fetchone()
    该方法获取查询结果集中的下一行,返回一个单一的序列。当没有更多可用的数据时,则返回None。
  • cursor.fetchall()
    该方法获取查询结果集中所有的行,返回一个列表。当没有可用的行时,返回一个空列表。
  • connection.commit()
    提交当前的事务。如果未调用该方法,那么自上一次调用commit()以来所做的任何动作对其他数据库连接来说是不可见的。
  • connection.rollback()
    回滚自上一次调用commit()以来对数据库所做的更改。
  • connection.close()
    关闭数据库连接。注意,这不会调用commit(),如果未调用任何commit()就关闭数据库连接,所做的更改将全部丢失。

举例

连接数据库

import sqlite3
conn = sqlite3.connect('test.db')

执行上述程序,将会在当前目录创建数据库test.db

创建表

import sqlite3
conn = sqlite3.connect('test.db')
c = conn.cursor()
c.execute('''CREATE TABLE COMPANY
        ( ID INT PARIMARY KEY NOTE NULL,
        NAME TEXT NOT NULL,
        AGE INT NOT NULL,
        ADDRESS CHAR(50),
        SALARY REAL);''')
conn.commit()
conn.close()

执行上述程序,将会在test.db中创建COMPANY表。

INSERT操作

import sqlite3
conn = sqlite3.connect('test.db')
c = conn.cursor()
c.execute("INSERT INTO COMPANY (ID, NAME, AGE, ADDRESS, SALARY) VALUES (1, 'Paul', 32, 'California', 20000)")
conn.commit()
conn.close()

执行上述程序,将会在COMPANY表中新增一个条目。

SELECT操作

import sqlite3
conn = sqlite3.connect('test.db')
c = conn.cursor()
cursor = c.execute("SELECT * FROM COMPANY")
for row in cursor:
    print(row)
conn.close()

执行上述程序,将会输出以下结果:

(1, 'Paul', 32, 'California', 20000.0)

UPDATE操作

import sqlite3
conn = sqlite3.connect('test.db')
c = conn.cursor()
c.execute("UPDATE COMPANY set SALARY = 2500 where ID=1")
conn.commit()
conn.close()

执行上述程序,将会把ID为1的条目的SALARY更新为2500。

DELETE操作

import sqlite3
conn = sqlite3.connect('test.db')
c = conn.cursor()
c.execute("DELETE from COMPANY where ID=1")
conn.commit()
conn.close()

执行上述程序,将会把ID为1的条目删除

参考

菜鸟教程-SQLite教程-Python