Python:操作数据库
(一) 前言
本文说明如何连接Oracle、MySQL、sqlserver,以及执行sql、获取查询结果等。
(二) DB-API
DB-API阐明一系列所需对象和数据库访问机制的标准。
Python操作数据库的模块如果遵循DB-API的标准(应该都会遵循这个标准),函数、方法的名称及功能应该是差不多的(下面几张表格列出了部分内容),就是传的参数可能有点区别。
connect函数
connect函数通过connection对象访问数据库。该函数创建并返回一个connection对象。
参数 |
说明 |
host |
数据库实例的访问地址(例如:IP\实例名) |
user |
用户名 |
password |
密码 |
database |
数据库名 |
connection对象
方法 |
说明 |
close() |
关闭数据库连接 |
commit() |
提交事务 |
rollback() |
取消事务 |
cursor() |
使用该连接创建并返回一个游标对象(或类游标对象) |
cursor对象
(感觉比较重要的就下面这3个)
方法 |
说明 |
execute() |
执行SQL |
fetchall() |
获取查询结果(执行select 语句后) |
callproc() |
调用存储过程 |
异常
异常 |
说明 |
DataError |
处理数据时出现问题 |
OperationalError |
数据库操作执行期间出现问题 |
IntegrityError |
数据库关系完整性错误 |
ProgrammingError |
SQL执行失败 |
(三) 模块安装
- Oracle:pip install cx_Oracle
- Mysql: pip install pymysql
- sql server:https://www.lfd.uci.edu/~gohlke/pythonlibs/ 下载pymssql,然后 pip install xxx.whl。(pip install pymssql 安装不了再用这种方式,上面2个如果安装不了也可以用这种方式去安装)
(四) Oracle示例
从下面3个示例可以看出,代码其实基本相同,只是导入的模块不一样(其他数据库应该也是差不多的)。
- import cx_Oracle
- # 连接数据库,参数:用户名/密码@服务器ip:端口号/实例名
- conn = cx_Oracle.connect('py/password@192.168.4.196:1521/orcl')
- # 创建游标对象
- cur = conn.cursor()
- #执行SQL
- cur.execute("insert into test_py t values('1005','ZS','张三','123456')")
- cur.execute("update test_py t set t.user_name='李四' where t.id='123' ")
- #提交事务
- conn.commit()
- #执行SQL
- cur.execute("select * from test_py")
- #获得查询结果
- row = cur.fetchall()
- print(row)
- #关闭数据库连接
- conn.close()
(五) MySql示例
- import pymysql
- # 连接数据库,host:服务器ip user:用户名 password:密码 database:数据库名
- conn = pymysql.connect(host='192.168.4.196', user='root', password='password', database='test')
- # 创建游标对象
- cur = conn.cursor()
- #执行SQL
- cur.execute("insert into test_py(id,user_account) values('100','admin')")
- cur.execute("update test_py set user_account = 'test6' where id='123'")
- #提交事务
- conn.commit()
- #执行SQL
- cur.execute("select * from test_py")
- #获得查询结果
- row = cur.fetchall()
- print(row)
- #关闭数据库连接
- conn.close()
(六) Sql server 示例
- import pymssql
- # 连接数据库,host:服务器ip\\实例名 user:用户名 password:密码 database:数据库名
- conn = pymssql.connect(host='192.168.4.196\\amsys', user='sa', password='', database='test')
- # 创建游标对象
- cur = conn.cursor()
- #执行SQL
- cur.execute("insert into test_py(id,user_account) values('100861','admin')")
- cur.execute("update test_py set user_account = 'test6' where id='123'")
- #提交事务
- conn.commit()
- #执行SQL
- cur.execute("select * from test_py")
- #获得查询结果
- row = cur.fetchall()
- print(row)
- #关闭数据库连接
- conn.close()
Python:操作数据库的更多相关文章
- python操作数据库
一,安装mysql 如果是windows 用户,mysql 的安装非常简单,直接下载安装文件,双击安装文件一步一步进行操作即可. Linux 下的安装可能会更加简单,除了下载安装包进行安装外,一般的l ...
- python操作数据库之批量导入
python操作数据库之批量导入 Python语法简洁清晰,特色之一是强制用空白符(white space)作为语句缩进. Python具有丰富和强大的库.它常被昵称为胶水语言,能够把用其他语言制作的 ...
- 零基础学Python--------第11章 使用Python操作数据库
第11章 使用Python操作数据库 11.1 数据库编程接口 在项目开发中,数据库应用必不可少.虽然数据库的种类有很多,如SQLite.MySQL.Oracle等,但是它们的功能基本都是一样的,为了 ...
- python操作数据库PostgreSQL
1.简述 python可以操作多种数据库,诸如SQLite.MySql.PostgreSQL等,这里不对所有的数据库操作方法进行赘述,只针对目前项目中用到的PostgreSQL做一下简单介绍,主要包括 ...
- Python操作数据库之 MySQL
Python操作数据库之MySQL 一.安装Python-MySQLdb模块 Python-MySQLdb是一个操作数据库的模块,Python 通过它对 mysql 数据实现各种操作. 如果要源码安装 ...
- Python接口测试实战3(上)- Python操作数据库
如有任何学习问题,可以添加作者微信:lockingfree 课程目录 Python接口测试实战1(上)- 接口测试理论 Python接口测试实战1(下)- 接口测试工具的使用 Python接口测试实战 ...
- Python学习笔记 - day11 - Python操作数据库
MySQL的事务 MySQL的事务支持不是绑定在MySQL服务器本身,而是与存储引擎相关,MySQL的两种引擎如下: 1.MyISAM:不支持事务,用于只读程序提高性能 2.InnoDB:支持ACID ...
- 孤荷凌寒自学python第四十四天Python操作 数据库之准备工作
孤荷凌寒自学python第四十四天Python操作数据库之准备工作 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 今天非常激动地开始接触Python的数据库操作的学习了,数据库是系统化设计 ...
- Python操作数据库及hashlib模块
一.hashlib模块 hashlib模块,主要用于加密相关的操作,在python3的版本里,代替了md5和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA51 ...
- Navicat使用与python操作数据库
一.Navicat使用 1.下载地址: <https://pan.baidu.com/s/1bpo5mqj> 2.测试+链接数据库,新建库 3.新建表,新增字段+类型+约束 4.设计表:外 ...
随机推荐
- C#微信公众号——自定义菜单
自定义菜单最多包括3个一级菜单,每个一级菜单最多包含5个二级菜单.一级菜单最多4个汉字,二级菜单最多7个汉字,多出来的部分将会以“...”代替.自定义菜单的介绍,可以看官方开发文档http://mp. ...
- c# 工具类(字符串和时间,文件)
using System; using System.IO; using System.Text.RegularExpressions; using System.Windows.Browser; n ...
- [模板][Luogu3387] 缩点 - Tarjan, 拓扑+DP
Description 给定一个n个点m条边有向图,每个点有一个权值,求一条路径,使路径经过的点权值之和最大.你只需要求出这个权值和. 允许多次经过一条边或者一个点,但是,重复经过的点,权值只计算一次 ...
- SpringMVC(九):SpringMVC 处理输出模型数据之ModelAndView
Spring MVC提供了以下几种途径输出模型数据: 1)ModelAndView:处理方法返回值类型为ModelAndView时,方法体即可通过该对象添加模型数据: 2)Map及Model:处理方法 ...
- 1.5 WEB API 上传文件
1.前提,设置跨域 2.在控制器头添加允许跨域 /// <summary> /// 文件管理口控制器 /// </summary> [EnableCors("*&qu ...
- chrome浏览器再次打开黑屏一段时间
打开chrome设置 最下面-显示高级设置 再拉到最下面-使用硬件加速模式(把勾去掉)
- laravel整合JWT遇到的问题及解决方案
1.在执行 php artisan jwt:secret 生成密钥的时候,报错Method Tymon\JWTAuth\Commands\JWTGenerateCommand::handle() do ...
- 顺序或者说优先级的重要性---解决dom生成问题有感
我们的大脑有逻辑,程序也有逻辑,只要一切都刚刚好,那么我们大脑的逻辑和程序的逻辑是没有冲突的:但是,有时候,我们想当然,只顾自己头脑中的逻辑,而随意臆想程序的逻辑,这个时候,就会有很多我们觉得不可思议 ...
- 实验吧_天下武功唯快不破&让我进去(哈希长度拓展攻击)
天下武功唯快不破 第一反应就去抓包,看到返回包的header中有FLAG的值,base64解码后得到下图所示 这就要求我们在请求头中post相应key的值,我直接在burp中尝试了多次都没有用,想起来 ...
- [LOJ 6185]烷基计数
Description 众所周知,大连 24 中是一所神奇的学校,在那里,化竞的同学很多都擅长写代码. 有一天,化学不及格的胡小兔向化竞巨佬晴岚请教化学题: “n 个碳原子的烷基共有多少种同分异构体? ...