我的编程空间,编程开发者的网络收藏夹
学习永远不晚

26. Python 对 mysql 的

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

26. Python 对 mysql 的

mysql数据库现在已经成为市场占有率最高的数据库,在开发过程中,很多情况下我们都需要操作mysql,所以对于python操作mysql的了解是必不可少的。

Python标准数据库接口为Python DB-API, Python DB-API为开发人员提供了数据库应用 编程接口。

参考地址:https://wiki.python.org/moin/DatabaseInterfaces,你可以查看python支持数据库的详细列表。

不同的数据库需要下载不同的DB API模块。

DB-API是一个规范。它定义了一系列必须的对象和数据库存取方式, 以便为各种各样的底层数据库系统和多种多样的数据库接口程序提供一致的访问接口。

Python的DB-API,为大多数的数据库实现了接口,使用它连接各数据库后,就可以用相同 的方式操作各数据库。

Python DB-API使用流程:

1.引入API模块。

2.获取与数据库的连接。

3.执行SQL语句和存储过程。

4.关闭数据库连接。


1. 安装所需要的包

MySQLdb 是用于Python链接Mysql数据库的接口,它实现了 Python 数据库 API 规范 V2.0,基于 MySQL C API 上建立的。

如果是windows系统:登录 https://pypi.python.org/pypi/MySQL-python/1.2.5 找到.exe结尾的包;

下载安装就好了,然后在cmd中执行:

64ae193ccae5be8f8d75eb9631a50c73.png

如果结果如上图所示,就说明你安装成功了,如果有如下报错信息,

>>> import MySQLdb

Traceback (most recent call last):

File "<stdin>", line 1, in <module>

ImportError: No module named MySQLdb

那是环境变量有问题,把安装刚才下载的.exe包的路径添加到环境变量中就可以了。


如果是linux系统,可以下载源码包进行安装:

链接中的zip包,然后安装:

# yum install –y python-devel

# yum install –y mysql-devel

# yum install –y gcc

解压:

# unzip MySQL-python-1.2.5.zip

# cd MySQL-python-1.2.5

# python setup.py build

# python setup.py install

# python

>>> import MySQLdb




2.数据库的连接

MySQLdb提供了connect方法用来和数据库建立连接,接收数个参数,返回连接对象:

平常我们在Mysql的数据库中手动建立python库的方法:

> create database python;


通过以下代码进行python库的连接:

conn=MySQLdb.connect(host="192.168.48.128",user="test",passwd="123456",db="python",port=3306,charset="utf8")

包含了几种参数:

host:数据库主机名.默认是用本地主机

user:数据库登陆名.默认是当前用户

passwd:数据库登陆的秘密.默认为空

db:要使用的数据库名.没有默认值

port:MySQL服务使用的TCP端口.默认是3306,数字类型

charset:数据库编码字符集

更多参数的信息可以查这里 http://mysql-python.sourceforge.net/MySQLdb.html

有时候,为了代码规范,推荐把所有数据库的配置写在一个字典中,如下所示:

def connect_mysql():
    db_config = {
        'host': '192.168.48.128',
        'port': 3306,
        'user': 'xiang',
        'passwd': '123456',
        'db': 'python',
        'charset': 'utf8'
    }
    cnx = MySQLdb.connect(**db_config)
    return cnx

这样写的代码更规范,即使以后数据库有协议,只需要改动 db_config 字典中的内容就可以了,后面的内容就不用改了,增加代码的可移植性;

也可以把 mysql 的连接包装成一个函数,以后在连接 mysql 的时候,直接调用函数就可以了!


3.Mysql事务

了解什么是mysql的事物

MySQL 事务主要用于处理操作量大,复杂度高的数据。比如,你操作一个数据库,公司的一个员工离职了,你要在数据库中删除他的资料,也要删除该人员相关的,比如邮箱,个人资产等。这些数据库操作语言就构成了一个事务。在MySQL中只有使用了Innodb数据库引擎的数据库或表才支持事务,所以很多情况下我们都使用innodb引擎。事务处理可以用来维护数据库的完整性,保证成批的SQL语句要么全部执行,要么全部不执行。

一般来说,事务是必须满足4个条件(ACID): Atomicity(原子性)、Consistency(稳定性)、Isolation(隔离性)、Durability(可靠性)

1、事务的原子性:一组事务,要么成功;要么撤回。

2、稳定性 : 有非法数据(外键约束之类),事务撤回。

3、隔离性:事务独立运行。一个事务处理后的结果,影响了其他事务,那么其他事务会撤回。事务的100%隔离,需要牺牲速度。

4、可靠性:软、硬件崩溃后,InnoDB数据表驱动会利用日志文件重构修改。可靠性和高速度不可兼得, innodb_flush_log_at_trx_commit选项 决定什么时候吧事务保存到日志里。


mysql在默认的情况下,是把每个select,insert,update,delete等做为一个事务的,登录mysql服务器,进入mysql,执行以下命令:

mysql> show variables like 'auto%';

+----------------------------------+--------+
| Variable_name                    | Value  |
+----------------------------------+--------+
| auto_increment_increment         | 1      |
| auto_increment_offset            | 1      |
| autocommit                       | ON     |
| automatic_sp_privileges          | ON     |
+----------------------------------+--------+
4 rows in set (0.00 sec)


如上所示:

有一个参数 autocommit 就是自动提交的意思,每执行一个msyql的 select,insert,update 等操作,就会进行自动提交。

如果把改选项关闭,我们就可以每次执行完一次代码就需要进行手动提交,connect 对象给我们提供了两种办法来操作提交数据。



4. mysql事务的方法

commit():提交当前事务,如果是支持事务的数据库执行增删改后没有commit则数据库默认回滚,白操作了

rollback():取消当前事务

下面我们来看个例子:

创建一个员工表:

> create table employees (

emp_no int not null auto_increment,

emp_name varchar(16) not null,

gender enum('M', 'F') not null,

hire_date date not null,

primary key (emp_no)

);


emp_no:         员工id,为主键且唯一

emp_name:    员工的名字

fender:         性别,只有M和F两种选择

hire_date:    雇佣的时间。


插入几条数据:

> insert into employees(emp_no, emp_name, gender, hire_date) values(1001, 'li', 'M', '2015-04-01');

> insert into employees(emp_no, emp_name, gender, hire_date) values(1002, 'xian', 'M', '2015-04-01');

> insert into employees(emp_no, emp_name, gender, hire_date) values(1003, 'sheng', 'M', '2015-04-01');

> select * from employees;

+-----------+----------------+----------+----------------+
| emp_no    | emp_name       | gender   | hire_date      |
+-----------+----------------+----------+----------------+
|   1001    | li             | M        | 2015-04-01     |
|   1002    | xian           | M        | 2015-04-01     |
|   1003    | sheng          | M        | 2015-04-01     |
+-----------+----------------+----------+----------------+


通过python代码增加一条数据到数据库中,代码如下:

import MySQLdb
def connect_mysql():
    db_config = {
        'host': '192.168.48.128',
        'port': 3306,
        'user': 'xiang',
        'passwd': '123456',
        'db': 'python',
        'charset': 'utf8'
    }
    cnx = MySQLdb.connect(**db_config)
    return cnx
    
if __name__ == '__main__':
    cnx = connect_mysql()
    cus = cnx.cursor()
    sql  = ''' create table test(id int not null);insert into test(id) values (100);'''
    try:
        cus.execute(sql)
        cus.close()
        cnx.commit()
    except Exception as e:
        cnx.rollback()
        print('Error')
        # raise e
    finally:
        cnx.close()

结果返回:

Error

查看数据库中的数据:select * from employees;

并没有发生变化

解释:

在我们插入数据雇佣时间字段 hire_date 的时候,故意把时间写错,导致异常发生,捕获到异常之后,打印 Error,最后关闭mysql连接。

cus = cnx.cursor() 的作用是创建一个游标对象。


免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

26. Python 对 mysql 的

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

26. Python 对 mysql 的

mysql数据库现在已经成为市场占有率最高的数据库,在开发过程中,很多情况下我们都需要操作mysql,所以对于python操作mysql的了解是必不可少的。Python标准数据库接口为Python DB-API, Python DB-API
2023-01-31

Python面向对象编程Day 26部分

五大数据类型:整型、字符串、列表、元组、字典多态概念指出了对象如何通过他们共同的属性和动作来操作和访问,而不需考虑他们具体的类、多态表明了动态(又名:运行时)绑定的存在,允许重载及运行时类型确定和验证。多态是继承的改变和扩展的实现机制,即调
2023-01-30

python对mysql的操作

http://sourceforge.net/projects/mysql-python如果你不确定你的python环境里有没有这个库,那就打开python shell,输入 import MySQLdb,如果返回错误信息,那就表示你的机器
2023-01-31

第26讲 python文件的格式化写入

s="xxx%d yyy%s\n" % (28,'jeapedu')file_obj.write(s)fd=open('format.txt','w')head='%10s %10s %10s \n' % ('ID','Name','Rec
2023-01-31

27. Python对Mysql的操作(

1.游标游标是系统为用户开设的一个数据缓冲区,存放SQL语句的执行结果用户可以用SQL语句逐一从游标中获取记录,并赋给主变量,交由python进一步处理,一组主变量一次只能存放一条记录仅使用主变量并不能完全满足SQL语句向应用程序输出数据的
2023-01-31

Python 对mysql数据库的操作

Python 对mysql数据库的操作#!/usr/bin/python# -*- coding: utf-8 -*-import MySQLdbclass mysql:    def __init__(self, sql, host='1
2023-01-31

python-对于mysql数据库的操作

python操作mysql数据库问题:DDL,DCL,DML的区别?语言与框架:jdbc/odbc操作数据库   java(ibatis/hibernate/jpa)操作数据库客户端工具:navicat for mysql 步骤:1.连接上
2023-01-30

使用Python对MySQL数据操作

本文介绍Python3使用PyMySQL连接数据库,并实现简单的增删改查。 什么是PyMySQL? PyMySQL是Python3.x版本中用于连接MySQL服务器的一个库,Python2.x中则使用mysqldb。 PyMySQL安装 在
2022-06-04

python对数据库mysql的操作(增删改查)

#coding=utf-8import pymysql# #查询# def connMySQL():# try:# conn=pymysql.connect(‘localhost‘,‘root‘,‘admin‘)# co
python对数据库mysql的操作(增删改查)
2015-11-13

Python 系统时间与Mysql时间对

由于自己是负责海外项目,常常会遇到一些问题,最近被系统时间与mysql时间不在一个时区,而坑了自己,一般修改了系统时区之后,MySQL必须重启,不然MySQL时区是不对的,会导致数据全部都是错的~~~,哎,只有坑到了自己,才会想到要去避免这
2023-01-31

python中的对象

对象:程序中使用的所有值都是对象,对象由内部属性和方法组成  这些方法会执行与数据相关的各种操作,前面操作列表类型数据时 我们已经用过了方法:data = [37,34];data.insert(1,25); data.append(23)
2023-01-31

用Python对MySQL同步状态进行监

用Python对MySQL同步状态进行监控使用Python对MySQL数据库服务器是否可访问,及主从同步是否中断进行监控,是一件非常简单的事情。感谢Python给我们带来了如此简单,强大,快捷的开发环境。本文使用到的Python模块 使用t
2023-01-31

使用python对mysql主从进行监控

1.编写python的监控脚本  A.通过获取mysql库中的状态值来判断这个mysql主从状态是否正常       B.进行两个状态值的判断         C.进行调取钉钉机器人,发送消息    2.设置定时任务进行脚本运行  cron
2023-01-30

Python如何对MySQL中的大量数据进行批量处理?(在Python中怎样实现对MySQL大数据的批量操作?)

本教程详细介绍了Python中对MySQL大量数据的批量处理方法,包括批量插入、更新和删除。它涵盖了使用executemany()函数、VALUES语法、WHERE子句和性能优化技巧。代码示例提供了如何完成这些操作的实际指导。通过使用这些技术,开发人员可以提高批量数据处理的效率,从而节省时间并优化数据库性能。
Python如何对MySQL中的大量数据进行批量处理?(在Python中怎样实现对MySQL大数据的批量操作?)
2024-04-02

【Python】python对齐问题的总

Python的对齐方式很重要,对齐方式决定了函数或者判断条件的作用域。def print_circle(matrix,up_hang,up_lie,down_hang,down_lie): result=[] if up
2023-01-31

python对xpath的支持

介绍python的Xpath的python开元项目:1.libxml2-python-2.6.4.tar.gz 安装:下载对应python版本的软件包à解压àpython setup.py install 例一:import libxml2
2023-01-31

Python的对象协议

Python是一门动态语言,Duck Typing概念遍布其中,所以其中的Concept并不是以类型的约束为载体,而是使用称作为协议的概念。那什么是Duck Typing呢?    Duck Typing是鸭子类型,在动态语言中用的较多,是
2023-01-31

Python中MySQLdb和torndb模块对MySQL的断连问题处理

在使用python 对wordpress tag 进行细化代码处理时,遇到了调用MySQLdb模块时的出错,由于错误提示和问题原因相差甚远,查看了N久代码也未发现代码有问题。后来问了下师傅,被告知MySQLdb里有一个断接的坑 ,需要进行数
2022-06-04

编程热搜

目录