SQLite 是一个C语言库,它可以提供一种轻量级的基于磁盘的数据库,这种数据库不需要独立的服务器进程,也允许需要使用一种非标准的 SQL 查询语言来访问它。一些应用程序可以使用 SQLite 作为内部数据存储。可以用它来创建一个应用程序原型,然后再迁移到更大的数据库,比如 PostgreSQL 或 Oracle。
Python3内置sqlite3模块用于操作数据库,只需直接导入模块即可。
内置常量
connection对象
sqlite3.connect(database, timeout, *args) 可以读取或创建数据库文件,并返回connection对象。
connection对象中包含非常多操作数据库的方法,详情查找文档。
cursor对象
cursor.execute(sql, optionalParam) 方法:
import sqlite3 # 引入模块 conn = sqlite3.connect(":memory:") # 在内存中建立数据库,并获取连接 curs = conn.cursor() # 从连接对象中获取光标对象 curs.execute("create table t_student(Sname, Sage)") # 用光标对象执行SQL语句创建表 name = "Jarjack" age = 18 # 1. 以“?”作占位符的形式执行SQL语句 curs.execute("insert into t_student values (?, ?)",(name,age)) # 2. 以参数命名的形式作占位符执行SQL语句 curs.execute("select * from t_student where Sname= :name",{"name":name}) # 3. 从结果集抓取一条记录输出。 print(curs.fetchone())
cursor.executemany(sql, seq_of_param)方法:
import sqlite3 # 引入模块 conn = sqlite3.connect(":memory:") # 在内存中建立数据库,并获取连接 curs = conn.cursor() # 从连接对象中获取光标对象 curs.execute("create table t_student(Sname, Sage)") # 用光标对象执行SQL语句创建表 # 1. 定义参数表的序列 students_param = [["张学友",24],["刘德华",25],["郭富城",19],["黎明",28]] # 2. 以“?”作占位符,以参数表的序列作为参数,依次为每个参数表执行数据插入。 curs.executemany("insert into t_student values (?,?)", students_param) # 3. 执行查询,返回结果集到cursor对象。 curs.execute("select * from t_student") print(curs.fetchall()) # 从结果集抓取一条记录输出。
cursor.executescript(sql, optional_param)方法:
import sqlite3 # 引入模块 conn = sqlite3.connect(":memory:") # 在内存中建立数据库,并获取连接 curs = conn.cursor() # 从连接对象中获取光标对象 # 1. 执行多条SQL语句 curs.executescript(""" create table t_person(name, age, sex); insert into t_person values("Jarjack",18,"male"); insert into t_person values("Leon",25,"male"); """) curs.execute("select * from t_person") # 再另外执行的查询 print(curs.fetchall())
可以在connection对象中调用execute()方法,相当于一种快捷方式,它会先建立一个临时的cursor对象,再由该对象执行。
connection对象和cursor对象中还有许多数据库操作的方法,如提交、回滚、创建函数、权限管理等,详情查找文档。
sqlite3仅支持5种类型:NULL, INTEGER, REAL, TEXT, BLOB,分别对应Python中的None, int, float, str, bytes类型。
若实际中需要处理多种类型,就需要用到类型扩展技术,一是对象适配,二是强制类型转换。
在Python安装MySQL的驱动模块PyMySQL,下载地址:https://github.com/PyMySQL/PyMySQL
pip install PyMySQL
在Python连接并操作MySQL数据库:
# 1. 引入MySQL驱动模块 import pymysql # 2. 连接数据库获取连接对象 conn = pymysql.connect(host="localhost",user="root",password="123456",database="db_practice") # 3. 在连接对象中获取光标对象用于执行SQL curs = conn.cursor() try: # 4. 插入数据 curs.execute("insert into t_dpmt values(50,'manufacture','Los Angle')") # 5. 更新数据(类型占位符预编译的方式!) curs.execute("update t_dpmt set locate='%s' where name='%s'" % ('guangzhou','manufacture')) # 6. 删除数据(类型占位符预编译的方式!) curs.execute("delete from t_dpmt where locate='%s'" % "guangzhou") # 7. 提交事务,使操作持久化到数据库(没有commit()数据不会保存,仅在面板中显示)。 conn.commit() # 8. 查询数据 curs.execute("select * from t_dpmt") # cursor对象保存结果集 resultset = curs.fetchall() # 获取结果集 for row in resultset: # 按行解析结果集 id = row[0] name = row[1] locate = row[2] print(id, name, locate) # 输出行 except: print("语句不正确!") conn.rollback() # 出现操作异常时回滚 finally: conn.close() # 最后关闭连接
pip install mysql-connector
。其他略。