python 连接MySQL
1.Python DB-API
Python的DB-API,为大多数的数据库实现了接口,使用它连接各数据库后,就可以用相同 的方式操作各数据库。
Python DB-API使用流程:
1. 引入API模块。
2. 获取与数据库的连接。
3. 执行SQL语句和存储过程。
4. 关闭数据库连接。
2.MySQL
MySQL是Web世界中使用最广泛的数据库服务器。是为服务器端设计的数据库,能承受高并发访问,MySQL内部有多种数据库引擎,最常用的引擎是支持数据库事务的InnoDB。
(1)MySQL的事务
一般来说,事务是必须满足4个条件(ACID): Atomicity(原子性)、Consistency(稳定性)、Isolation(隔离性)、Durability(可靠性)
1、事务的原子性:一组事务,要么成功;要么撤回。
2、稳定性 : 有非法数据(外键约束之类),事务撤回。
3、隔离性:事务独立运行。一个事务处理后的结果,影响了其他事务,那么其他事务会撤回。事务的100%隔离,需要牺牲速度。
4、可靠性:软、硬件崩溃后,InnoDB数据表驱动会利用日志文件重构修改。可靠性和高速度不可兼得, innodb_flush_log_at_trx_commit选项 决定什么时候吧事务保存到日志里
查询MySQL自动提交:autocommit
mysql> show variables like 'auto%';
+--------------------------+-------+
| Variable_name | Value |
+--------------------------+-------+
| auto_increment_increment | 1 |
| auto_increment_offset | 1 |
| autocommit | ON |
| automatic_sp_privileges | ON |
+--------------------------+-------+
(2)MySQL的常用操作
授权超级用户:
grant all privileges on *.* to 'tangnanbing'@'%' identified by '1qaz@WSX' with grant option;
查看都有哪些库 show databases;
查看某个库的表 use db; show tables \G;
查看表的字段 desc tb;
查看建表语句 show create table tb;
当前是哪个用户 select user();
当前库 select database();
创建库 create database db1;
创建表 create table t1 (id int, name char(40),adress varchar(30));
查看数据库版本 select version();
查看mysql状态 show status;
修改mysql参数 show variables like 'max_connect%'; set global max_connect_errors = 1000;
查看mysql队列 show processlist;
select * from information_schema.processlist where info is not null;
sleep的可以忽略,qurey查询的才有
创建普通用户并授权 grant all on *.* to databases1.user1 identified by '123456';
grant all on db1.* to 'user2'@'10.0.2.100' identified by '111222';
grant all on db1.* to 'user3'@'%' identified by '231222';insert into tb1 (id,name) values(1,'aming');
更改密码 UPDATE mysql.user SET password=PASSWORD("newpwd") WHERE user='username' ;
查询 select count(*) from mysql.user; select * from mysql.db; select * from mysql.db where host like '10.0.%';
插入 update db1.t1 set name='aaa' where id=1;
清空表 truncate table db1.t1;
删除表 drop table db1.t1;
删除数据库 drop database db1;
修复表 repair table tb1 [use frm];
查看权限show grants for root@'localhost';
查询表中的字段 echo "select user,host,password from mysql.user" |mysql -uroot -ppwd
将查询到的信息导出到文件中 mysql -uroot -p1234556 -e "select user,host,password into outfile '/home/mysql/1.txt' from mysql.user;";
3.连接MySQL使用的包
(1)MySQLdb
是用于Python链接Mysql数据库的接口,它实现了 Python 数据库 API 规范 V2.0,基于 MySQL C API 上建立的。
我们可以通过网站下载安装,下载地址:https://pypi.org/project/MySQL-python/1.2.5/#files
分别对应有windows和源码安装的方法。
(2)pymysql
python3以后是不支持MySQLdb了,但是可以使用pymysql包,可以直接通过pymysql进行连接。
pip install pymysql
mysqldb 与 pymsql在用法上几乎相同,只是前者支持python2,后者支持python3,所以根据自己的版本使用就行了。
4.连接实例
Python 数据库图解流程
Connection、Cursor比喻
(1)Connection()
Connection()的参数:
host:数据库主机名.默认是用本地主机
port:MySQL服务使用的TCP端口.默认是3306,数字类型
user:数据库登陆名.默认是当前用户
password:数据库登陆的秘密.默认为空
db:要使用的数据库名.没有默认值
charset:数据库编码
(2)cursor()
cursor就是一个Cursor对象,这个cursor是一个实现了迭代器(def__iter__())和生成器(yield)的MySQLdb对象,这个时候cursor中还没有数据,只有等到fetchone()或fetchall()的时候才返回一个元组tuple,才支持len()和index()操作,这也是它是迭代器的原因。但同时为什么说它是生成器呢?因为cursor只能用一次,即每用完一次之后记录其位置,等到下次再取的时候是从游标处再取而不是从头再来,而且fetch完所有的数据之后,这个cursor将不再有使用价值了,即不再能fetch到数据了。
常用方法:
close():关闭此游标对象
fetchone():得到结果集的下一行
fetchmany(size):得到结果集的下几行
fetchall():得到结果集中剩下的所有行
excute(sql[, args]):执行一个数据库查询或命令
excutemany(sql, args):执行多个数据库查询或命令
(3)连接测试
在连接之前我们要先在数据库上授权一个用户,让它可以登录:
授权用户 grant all privileges on *.* to sixgod@"%" identified by "123456";
flush privileges;
授权之后就可以用这个用户来进行连接了。
conn = pymsql.connect(host='localhost',port = 3306,user='sixgod', passwd='123456',db ='test')
#Connect() 方法用于创建数据库的连接,里面指定参数:用户名,密码,主机等信息。
cur=conn.cursor() #通过获取到的数据库连接conn下的cursor()方法来创建游标。
cur.execute("show databases;")
#通过游标cur 操作execute()方法可以写入纯sql语句。通过execute()方法中写入sql语句来对数据进行操作。
data =cur.fetchall() #获取查询到数据
print(date) #将数据打印
cur.commit()#如果是向数据库插入一条数据后,必须使用该命令,否则数据不会被真正的写入。
cur.close() #关闭游标
conn.close() #关闭数据库连接
使用pycharm编辑器连接:
import pymysqlconn = pymysql.connect(host="location",port=3306,user="sixgod",password="123456",db="test") cur = conn.cursor()cur.execute("show tables;") data = cur.fetchall() print(data)cur.close() conn.close()
结果为:(('sixgod',), ('text',))
可以看到已经正确连接,并且可以进行相关查询。
当插入数据时可以这样写:
import pymysqlconn = pymysql.connect(host="location",port=3306,user="sixgod",password="123456",db="test") cur = conn.cursor()try:cur.execute("insert into sixgod(id,name) values(3,'a');") # 执行sql语句 conn.commit() # 提交到数据库执行 except:conn.rollback() # 如果发生错误则回滚 cur.close()#关闭游标 conn.close()#释放数据库资源
python 连接MySQL相关推荐
- python链接mysql 判断是否成功_【初学python】使用python连接mysql数据查询结果并显示...
因为测试工作经常需要与后台数据库进行数据比较和统计,所以采用python编写连接数据库脚本方便测试,提高工作效率,脚本如下(python连接mysql需要引入第三方库MySQLdb,百度下载安装) # ...
- python连接MySQL并进行数据查询
python连接MySQL并进行数据查询 #建立数据库的连接 mydb = mysql.connector.connect(host="0.0.0.0",user="ro ...
- mac版python连接mysql_Mac下Python连接MySQL · BlBana’s BlackHouse
Mac和Windows下安装mysqlclient坑点记录 Python连接MySQL(mysqlclient) Python连接MySQL类库pymysql python3:mysqlclient, ...
- python连接mysql数据库数据库_python如何连接mysql数据库
先花点时间来说说一个程序怎么和数据库进行交互 1.和数据库建立连接 2.执行sql语句,接收返回值 3.关闭数据库连接 使用MySQLdb也要遵循上面的几步.让我们一步步的进行. 1.MySQL数据库 ...
- 【数据平台】基于pymysql库python连接mysql
1.场景:python连接mysql的API使用pymysql库 https://pypi.python.org/pypi/PyMySQL/ 安装:pip install pymysql 即可 2.代 ...
- Python——Python连接MySQL数据库
基本概念 PyMySQL:PyMySQL是封装了MySQL驱动的Python驱动,一个能使Python连接到MySQL的库. mysql-connector-python(MySQL Connecto ...
- Python连接Mysql数据库入门
Python 连接mysql数据库入门教程 直接上代码 数据库建表省略 要执行哪段代码把#去掉即可:有文字解释 难度 : ⭐⭐(全星5颗星的情况下) import pymysql # 导入模块 根据P ...
- 使用Connector / Python连接MySQL/查询数据
使用Connector / Python连接MySQL connect()构造函数创建到MySQL服务器的连接并返回一个 MySQLConnection对象 在python中有以下几种方法可以连接到M ...
- python连接mysql查询一个数据_使用Connector / Python连接MySQL/查询数据
使用Connector / Python连接MySQL connect()构造函数创建到MySQL服务器的连接并返回一个 MySQLConnection对象 在python中有以下几种方法可以连接到M ...
- python mysql 连接6_寒假学习进度-6(Python连接MySQL数据库)
Python连接mysql和操作 软件:pycharm 开始在pycharm下面的Terminal中安装mysql时提醒pip版本不够,所以需要先升级一下pip python -m pip insta ...
最新文章
- 如何更新你的机器学习模型?手把手带你设计一个可持续的预测模型!
- JAVA偏向锁的什么时候释放_Java中的偏向锁
- Centos常用系统命令
- java操作字符串——CSDN博客
- 睡眠音频分割及识别问题(九)--Android下的YAMNet
- zabbix server 迁移步骤
- python中lambda()的用法_python中lambda()的用法
- 如何用 CNN 玩转 AlphaGo 版的五子棋?
- 9.1 正则介绍_grep(上)
- Android 布局左中右布局
- matlab排课方案,求助matlab大神,学校的课程安排太骚了,我们压根就不用学matlab...
- Linux信号量详解
- 汇编语言属于计算机科学,汇编语言是一种依赖于计算机的低级程序设计语言吗...
- WACV 2021 论文大盘点-医学影像篇
- 手机厂商筑起APP的“垄断”高墙:用户下载选择权“名存实亡”
- 多视图立体视觉:从几何到学习 (PAMI2022, IJCV2022)
- 相对路径与绝对路径的写法及区别
- OBS接入网络摄像机
- MiniGUI学习整理
- 『题解』洛谷P2357 守墓人