作者:billy
版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处

数据库编程接口

在项目开发中,数据库应用必不可少。虽然数据库的种类有很多,如 SQLite、MySQL、Oracle 等等,但是它们的功能基本都是一样的,为了对数据库进行统一的操作,大多数语言都提供了简单的、标准化的数据库接口(API)。在 Python Database API 2.0 规范中,定义了 Python 数据库 API 接口的各个部分,如模块接口、连接对象、游标对象、类型对象和构造器、DB API 的可选扩展以及可选的错误处理机制等等。

在 Python 中,可以通过数据库模块的 connect() 函数获取数据库连接对象(Connection Object),该对象主要提供获取数据库游标对象和提交/回滚事务的方法,以及关闭数据库连接。

connect() 函数常用的参数及说明,请参考下表:

参数 说明
dsn 数据源名称,给出该参数表示数据库依赖
user 用户名
password 用户密码
host 主机名
database 数据库名称

connect() 函数返回的连接对象,有以下常用方法:

方法名 说明
close() 关闭数据库连接
commit() 提交事务
rollback() 回滚事务
cursor() 获取游标对象,操作数据库,如执行 DML 操作、调用存储过程等

游标对象(Cursor Object)代表数据库中的游标,用于指示抓取数据库操作的上下文。主要提供执行 SQL 语句、调用存储过程、获取查询结果等方法。游标对象的常用方法如下表所示:

方法名 说明
callproc(procname, [, parameters]) 调用存储过程,需要数据库支持
close() 关闭当前游标
execute(operation[, parameters]) 执行数据库操作,SQL 语句或者数据库命令
executemany(operation, seq_of_params) 用于批量操作,如批量更新
fetchone() 获取查询结果集中的下一条记录
fetchmany(size) 获取指定数量的记录
fetchall() 获取结果集的所有记录
nextset() 跳至下一个可用的结果集
arraysize 指定使用 fetchmany() 获取的行数,默认为 1
setinputsizes(sizes) 设置在调用 execute*() 方法时分配的内存区域大小
setoutputsize(sizes) 设置列缓冲区大小,对大数据列如 LONGS 和 BLOBS 尤其有用

使用 SQLite

与许多其他数据库管理系统不同,SQLite 不是一个客户端/服务器结构的数据库引擎,而是一种嵌入式数据库,它的数据库就是一个文件。SQLite 将整个数据库,包括定义、表、索引以及数据本身,作为一个单独的、可跨平台使用的文件存储在主机中。由于 SQLite 本身使用 C 语言写的,而且体积很小,所以经常被集成到各种应用程序中。Python 就内置了 SQLite3,所以在 Python 中使用 SQLite 不需要安装任何模块,直接使用。

操作数据库流程如下:

Created with Raphaël 2.2.0开始创建 connection获取 cursor执行 SQL 语句,处理数据结果关闭 cursor关闭 connection结束

示例1:

import sqlite3       # 导入 SQLite 数据库# 连接数据库文件 demo.db,如果文件不存在,会自动在当前目录创建
conn = sqlite3.connect('demo.db')    # 获取游标
cursor = conn.cursor()         # 创建表 user
cursor.execute('create table user(id int(10) primary key, name varchar(20))')   # 向表 user 中插入数据
cursor.execute('insert into user(id, name) values ("1", "Billy")')
cursor.execute('insert into user(id, name) values ("2", "Kitty")')
cursor.execute('insert into user(id, name) values ("3", "Alice")')# 关闭游标
cursor.close() # 提交事务
conn.commit()   # 断开连接
conn.close()

示例2:

import sqlite3conn = sqlite3.connect('demo.db')
cursor = conn.cursor()cursor.execute('select * from user')
result = cursor.fetchone()
print(result)cursor.execute('select * from user where id > 1')
result = cursor.fetchall()
print(result)cursor.execute('update user set name = ? where id = ?', ("Miss", 3))
cursor.execute('select * from user')
result = cursor.fetchall()
print(result)cursor.execute('delete from user where id = ?', (2, ))
cursor.execute('select * from user')
result = cursor.fetchall()
print(result)cursor.close()
conn.commit()
conn.close()

上述例子的运行结果为:

(1, 'Billy')
[(2, 'Kitty'), (3, 'Alice')]
[(1, 'Billy'), (2, 'Kitty'), (3, 'Miss')]
[(1, 'Billy'), (3, 'Miss')]

下载并配置 MySQL

MySQL 是一款开源的数据库软件,由于其免费特性得到了全世界用户的喜爱,是目前使用人数最多的数据库,在使用前需要先下载安装。

下载地址1:官网下载

下载地址2:网盘下载
提取码:l4f2

下载、解压缩完成之后,需要配置环境变量

配置完环境变量之后,在 D:\mysql\mysql-8.0.21-winx64 目录下新增加一个配置文件 mysql.ini ,同时在 bin 的同级目录下创建一个 data 文件夹(用于存放数据库数据)


mysql.ini 的内容如下

[mysql]# 设置mysql客户端默认字符集
default-character-set=utf8 [mysqld]#设置3306端口
port = 3306 # 设置mysql的安装目录
basedir=D:\mysql\mysql-8.0.21-winx64# 设置mysql数据库的数据的存放目录
datadir=D:\mysql\mysql-8.0.21-winx64\data# 允许最大连接数
max_connections=200# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB


初始化数据库:mysqld --initialize-insecure --user=mysql
安装 mysql:mysqld install
启动服务:net start mysql
以管理员身份登录 mysql:mysql -u root -p
默认密码为空,直接回车即可
修改管理员密码:ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
刷新权限:FLUSH PRIVILEGES;

至此大功告成,可以使用 Navicat for MySQL 操作数据库了

下载并安装 Navicat for MySQL
下载地址:网盘下载
提取码:7q8u

在 Python 中使用 MySQL

由于 MySQL 服务器以独立的进程运行,并通过网络对外服务,所以,需要支持 Python 的 MySQL 驱动来连接到 MySQL 服务器。在 Python 中支持 MySQL 的数据库模块有很多,我们选择使用 PyMySQL。

cmd -> 右键以管理员身份运行命令提示符,输入以下命令:
pip3 install PyMySQL

如果安装失败,可以在后面添加镜像路径:
pip3 install PyMySQL -i https://pypi.douban.com/simple

示例:

import pymysql# 打开数据库,参数依次为:主机名/IP,用户名,密码,数据库名,字符集
db = pymysql.connect("localhost", "root", "123456", "python", charset='utf8')# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()# 使用 execute() 方法执行 SQL 查询
cursor.execute("select version()")# 使用 fetchone() 方法获取单条数据
data = cursor.fetchone()
print("Datebase version : %s " % data)        # 输出 Datebase version : 8.0.21 # 如果表 books 存在,则删除表
cursor.execute("DROP TABLE IF EXISTS books")# 使用与处理语句创建表
sql = """
CREATE TABLE books (id int(8) NOT NULL AUTO_INCREMENT,name varchar(50) NOT NULL,category varchar(50) NOT NULL,price decimal(10,2) DEFAULT NULL,publish_time date DEFAULT NULL,PRIMARY KEY (id)
) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
"""# 执行 SQL 语句
cursor.execute(sql)# 数据列表
data = [("Python 深度解析", 'Python', '79.80', '2018-5-20'),("零基础学 Python", 'Python', '69.80', '2018-6-18'),("PHP 项目开发实战入门", 'PHP', '79.80', '2016-5-21'),("Java 从入门到精通", 'Java', '69.80', '2017-5-21')]try:# 执行 SQL 语句,插入多条数据cursor.executemany("insert into books(name, category, price, publish_time) values (%s, %s, %s, %s)", data)# 提交数据db.commit()
except:# 发生错误时回滚db.rollback()# 关闭数据库连接
db.close()

更多请参考

  • Python 进阶之路

Python 操作数据库相关推荐

  1. Python操作数据库之 MySQL

    Python操作数据库之MySQL 一.安装Python-MySQLdb模块 Python-MySQLdb是一个操作数据库的模块,Python 通过它对 mysql 数据实现各种操作. 如果要源码安装 ...

  2. Python 操作数据库(1)

    在关系数据库中,数据库表是一系列二维数组的集合,用来代表和储存数据对象之间的关系.它由纵向的列和横向的行组成,例如一个有关作者信息的名为 authors 的表中,每个列包含的是所有作者的某个特定类型的 ...

  3. 表操作,数据操作,单表查询,python操作数据库

    1.表操作 创建 create table 删除 drop table 查看表结构 desc 表/show create table 表 修改 alter table 表名 rename 新表名 al ...

  4. python 操作数据库的常用SQL命令

    这俩天在学习PYTHON操作数据库的知识.其实基本SQL命令是与以前学习的MYSQL命令一致,只是增加了一些PYTHON语句. 1,安装pymysql,并导入. import pymysql 2,因为 ...

  5. Python学习笔记:使用Python操作数据库

    Python学习笔记:使用Python操作数据库 一.数据库编程接口 为了对数据库进行统一的操作,大多数语言都提供了简单的.标准化的数据库接口(API).在Python Database API 2. ...

  6. mybatisplus 操作另一个数据库的数据_实例分析:python操作数据库项目

    本文根据一个项目实例,记录分享一下python将数据库的内容提取显示到程序界面的过程及相关设置,探索python操作数据库的用法.主要分享内容:1.显示数据库内容.2.修改数据库内容.3.表格控件指定 ...

  7. Python操作数据库完成接口测试

    前言 数据库的操作在测试工作中也是经常使用的,通过一些一些工具来操作数据库的方法大家都应该了解,那么Python操作数据库的大家了解吗? 今天测试君通过本篇文章介绍下如何通过Python来操作mysq ...

  8. 五、使用Python操作数据库

    (六)使用Python操作数据 程序运行时,数据是在内存中.当程序终止时,通常需将数据保存在磁盘上.为了便于程序保存和读取数据,并能直接通过条件快速查询到指定数据,数据库(Database)这种专门用 ...

  9. Python学习笔记(3):Python操作数据库

    安装MySQLdb 默认情况下Python中并没有安装MySQLdb,因此,在使用之前,我们要先安装MySQLdb. 安装步骤: 首先要下载MySQL-Python,下载地址是https://pypi ...

  10. python操作数据库出现错误 : Unknown column 'XXXX' in 'where clause'amp;amp;amp;amp;amp;amp;amp;amp;quot;

    第一种情况:Unknown column 'XXXX' in 'where clause python操作数据库出现错误 : Unknown column 'XXXX' in 'where claus ...

最新文章

  1. openGL第四讲——像素格式管理
  2. Labview 属性节点讲解
  3. Sentinel-Dashboard 与 apollo 规则的相互同步
  4. linux多线程简介
  5. 打造极致体验:字节跳动亿级 DAU 背后的音视频技术最佳实践
  6. 如何使用 controllerExtensions 给 SAP Fiori Elements List Report 的表格注册事件响应函数
  7. 兼容FF,IE的纯CSS下拉菜单
  8. C#开发 —— 基础知识
  9. php resque 计划任务,PHP-RESQUE - 实现重试
  10. 安远职业高中计算机专业,安远中等专业学校2021年招生简章
  11. 原创电子书:C#难点逐个击破
  12. Android 应用开发(9)---内联复杂的XML资源
  13. 计算机图形学----投影矩阵
  14. python 读取数据库内存爆_解决python读取几千万行的大表内存问题
  15. Python中用pandas将numpy中的数组数据保存到csv文件
  16. Unity组件脚本的常用类和结构体GameObject
  17. Python3 PyV8“安装与使用”教程
  18. RGMII接口(KSZ9031)
  19. 基于MATLAB的雷达的杂波模拟器
  20. (教程) 个人微信公众号做查券机器人怎么关联优惠券小程序?

热门文章

  1. PaddleHub百度飞桨【Python小白逆袭大神】七天打卡营心得
  2. MySQL 之 数据操作
  3. MUD服务器源码下载 WheelMUD (C# .NET)
  4. 8812au各驱动安装以及监听模式没mon后缀
  5. PF_RING开发指南
  6. Java面试题2021,智慧树java程序设计答案
  7. Maven系列第五讲 私服讲解
  8. 电子学会scratch竞赛真题三级真题19年12月真题(含线上题库答题软件)
  9. android源码下编译apk内无so,Android源码编译反思
  10. python办公自动化价值是什么意思_最全总结 | 聊聊 Python 办公自动化之 Word(中)...