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示例

 1 import pymysql
 2 
 3 # 连接数据库,host:服务器ip user:用户名 password:密码  database:数据库名
 4 conn = pymysql.connect(host='192.168.4.196', user='root', password='password', database='test')
 5 # 创建游标对象
 6 cur = conn.cursor()
 7 #执行SQL
 8 cur.execute("insert into test_py(id,user_account) values('100','admin')")
 9 cur.execute("update test_py  set user_account = 'test6' where id='123'")
10 #提交事务
11 conn.commit()
12 #执行SQL
13 cur.execute("select * from test_py")
14 #获得查询结果
15 row = cur.fetchall()
16 print(row)
17 #关闭数据库连接
18 conn.close()

(六)      Sql server 示例

import pymssql

# 连接数据库,host:服务器ip\\实例名 user:用户名 password:密码  database:数据库名
conn = pymssql.connect(host='192.168.4.196\\amsys', user='sa', password='123', 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()

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Django Scrapy

mysql管理相关

查看数据库是否启动 ps -ef | grep mysqld 如果未启动 cd /usr/bin ./mysqld_safe & 想关闭mysql服务器...

3739
来自专栏沈唁志

如何在CentOS 7上安装PostgreSQL关系数据库

PostgreSQL关系数据库系统是一个功能强大的,可扩展的,并符合标准的开源数据库平台。本指南将帮助您在CentOS 7 Linode上安装和配置Postgr...

1292
来自专栏醉生梦死

MySQL日志管理工具 mysqlbinlog

 [root@db02 data]# mysqlbinlog mysql_bin.000001

4332
来自专栏文渊之博

如何查看表和索引的统计信息

  这几天要求做一个服务器的统计信息,主要针对表和索引。下面我就简单分享几个查询数据表和索引统计信息的方法: 1.使用T-SQL 语句实现: select sc...

2306
来自专栏LanceToBigData

MySQL(十五)之数据备份中mysqldump详解

前言   其实前面一篇数据备份已经是非常的详细了,这里我想单独的讲解一下mysqldump,相信很多程序员都是用过这个命令的! 一、MySQL数据库的备份与还原...

3078
来自专栏性能与架构

如何在修改Mysql表结构时不影响读写?

线上数据库难免会有修改表结构的需求,MySQL 在修改表结构时会锁表,这就会影响读写操作,小表还好,一会儿就修改完成了,但大表会比较麻烦,下面看一个解决方案 解...

3506
来自专栏破晓之歌

Django框架中Mysql数据库连接 原

将settings.py文件中的Databases数据库连接部分设置如上,这里的USER和PASSWORD要和mysql里设置的一样,3306端口为默认,127...

992
来自专栏张善友的专栏

SQL Server : Browser服务

SQL Server : Browser服务是SQL Server 2005新增的,简单的说,如果一个物理服务器上面有多个SQL Server实例,那么为了确保...

2135
来自专栏吴柯的运维笔记

使用XtraBackup工具实现数据库备份

一:安装XtraBackup软件包 1)安装依赖包perl-DBD-MySQL perl-Digest-MD5 libev # yum -y install ...

3655
来自专栏小狼的世界

重新认识wget

Wget是平时经常会用到的一个工具,这个工具其实有着非常丰富的参数和配置,能够实现很强大的功能。比较常用的一个就是抓站或者为网站做镜像。

811

扫码关注云+社区