Python 操作数据库
作者: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 不需要安装任何模块,直接使用。
操作数据库流程如下:
示例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 操作数据库相关推荐
- Python操作数据库之 MySQL
Python操作数据库之MySQL 一.安装Python-MySQLdb模块 Python-MySQLdb是一个操作数据库的模块,Python 通过它对 mysql 数据实现各种操作. 如果要源码安装 ...
- Python 操作数据库(1)
在关系数据库中,数据库表是一系列二维数组的集合,用来代表和储存数据对象之间的关系.它由纵向的列和横向的行组成,例如一个有关作者信息的名为 authors 的表中,每个列包含的是所有作者的某个特定类型的 ...
- 表操作,数据操作,单表查询,python操作数据库
1.表操作 创建 create table 删除 drop table 查看表结构 desc 表/show create table 表 修改 alter table 表名 rename 新表名 al ...
- python 操作数据库的常用SQL命令
这俩天在学习PYTHON操作数据库的知识.其实基本SQL命令是与以前学习的MYSQL命令一致,只是增加了一些PYTHON语句. 1,安装pymysql,并导入. import pymysql 2,因为 ...
- Python学习笔记:使用Python操作数据库
Python学习笔记:使用Python操作数据库 一.数据库编程接口 为了对数据库进行统一的操作,大多数语言都提供了简单的.标准化的数据库接口(API).在Python Database API 2. ...
- mybatisplus 操作另一个数据库的数据_实例分析:python操作数据库项目
本文根据一个项目实例,记录分享一下python将数据库的内容提取显示到程序界面的过程及相关设置,探索python操作数据库的用法.主要分享内容:1.显示数据库内容.2.修改数据库内容.3.表格控件指定 ...
- Python操作数据库完成接口测试
前言 数据库的操作在测试工作中也是经常使用的,通过一些一些工具来操作数据库的方法大家都应该了解,那么Python操作数据库的大家了解吗? 今天测试君通过本篇文章介绍下如何通过Python来操作mysq ...
- 五、使用Python操作数据库
(六)使用Python操作数据 程序运行时,数据是在内存中.当程序终止时,通常需将数据保存在磁盘上.为了便于程序保存和读取数据,并能直接通过条件快速查询到指定数据,数据库(Database)这种专门用 ...
- Python学习笔记(3):Python操作数据库
安装MySQLdb 默认情况下Python中并没有安装MySQLdb,因此,在使用之前,我们要先安装MySQLdb. 安装步骤: 首先要下载MySQL-Python,下载地址是https://pypi ...
- 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 ...
最新文章
- openGL第四讲——像素格式管理
- Labview 属性节点讲解
- Sentinel-Dashboard 与 apollo 规则的相互同步
- linux多线程简介
- 打造极致体验:字节跳动亿级 DAU 背后的音视频技术最佳实践
- 如何使用 controllerExtensions 给 SAP Fiori Elements List Report 的表格注册事件响应函数
- 兼容FF,IE的纯CSS下拉菜单
- C#开发 —— 基础知识
- php resque 计划任务,PHP-RESQUE - 实现重试
- 安远职业高中计算机专业,安远中等专业学校2021年招生简章
- 原创电子书:C#难点逐个击破
- Android 应用开发(9)---内联复杂的XML资源
- 计算机图形学----投影矩阵
- python 读取数据库内存爆_解决python读取几千万行的大表内存问题
- Python中用pandas将numpy中的数组数据保存到csv文件
- Unity组件脚本的常用类和结构体GameObject
- Python3 PyV8“安装与使用”教程
- RGMII接口(KSZ9031)
- 基于MATLAB的雷达的杂波模拟器
- (教程) 个人微信公众号做查券机器人怎么关联优惠券小程序?
热门文章
- PaddleHub百度飞桨【Python小白逆袭大神】七天打卡营心得
- MySQL 之 数据操作
- MUD服务器源码下载 WheelMUD (C# .NET)
- 8812au各驱动安装以及监听模式没mon后缀
- PF_RING开发指南
- Java面试题2021,智慧树java程序设计答案
- Maven系列第五讲 私服讲解
- 电子学会scratch竞赛真题三级真题19年12月真题(含线上题库答题软件)
- android源码下编译apk内无so,Android源码编译反思
- python办公自动化价值是什么意思_最全总结 | 聊聊 Python 办公自动化之 Word(中)...