python操作mysql二
游标
创建游标对象
conn = pymysql.connect(**dbConfig) # **dbConfig指的是需要传入的mysql的参数,如host,port,user,passwd,db
cursor = conn.cursor()
游标常用的方法
cursor.close() 关闭此游标对象
cursor.execute(sql[,args]) 执行sql语句,增删改查
cursor.executemany(sql,args) 执行多个sql语句,增删改查
cursor.fetchone() 得到结果集的下一行
cursor.fetchmany() 得到结果集的下几行
cursor.fetchall() 得到结果集中剩下的所有行
数据库连接池
import pymysql
from DBUtils.PooledDB import PooledDB db_config = {
"host": "127.0.0.1",
"port": 3306,
"user": "root",
"passwd": "",
"db": "test",
# "charset": "utf8"
} spool = PooledDB(pymysql, 5, **db_config) # 5为连接池里的最少连接数
conn = spool.connection() # 以后每次需要数据库连接就是用connection()函数获取连接
cur = conn.cursor()
SQL = "select * from user;"
result = cur.execute(SQL)
result = cur.fetchall()
print(result)
cur.close()
conn.close()
数据库的相关操作
常用函数
sql = '''set @i := 10000;
insert into Student select @i:=@i+1, substr(concat(sha1(rand()), sha1(rand())), 1, 3 + floor(rand() * 75)), case floor(rand()*10) mod 2 when 1 then 'M' else 'F' end, 25-floor(rand() * 5) from tmp a, tmp b, tmp c, tmp d;
'''
substr 是一个字符串函数,从第二个参数1,开始取字符,取到3 + floor(rand() * 75)结束
floor 函数代表的是去尾法取整数。
rand() 函数代表的是从0到1取一个随机的小数。
rand() * 75 就代表的是:0到75任何一个小数,
3+floor(rand() * 75) 就代表的是:3到77的任意一个数字
concat() 函数是一个对多个字符串拼接函数。
sha1 是一个加密函数,sha1(rand())对生成的0到1的一个随机小数进行加密,转换成字符串的形式。
concat(sha1(rand()), sha1(rand())) 就代表的是:两个0-1生成的小数加密然后进行拼接。
substr(concat(sha1(rand()), sha1(rand())), 1, floor(rand() * 80)) 就代表的是:从一个随机生成的一个字符串的第一位开始取,取到(随机3-77)位结束。
Gender字段:case floor(rand()*10) mod 2 when 1 then 'M' else 'F' end, 就代表的是,如果余数是1就代表M,否则代表F
floor(rand()*10) 代表0-9随机取一个数
floor(rand()*10) mod 2 就是对0-9取得的随机数除以2的余数
case floor(rand()*10) mod 2 when 1 then 'M' else 'F' end, 代表:当余数为1是,就取M,其他的为F
创建表
create table Student(
stdId int not null,
stdname varchar(100),
age int,
sex enum('M', 'F'),
score int);
插入数据
insert into Student (stdId, stdname, age, sex, score) values (1, "yangjian", 19, "M", 95), (2, "zhangsan", 15, "F", 99);
查询数据
# 查询所有名字重复的学生信息
select * from Student where stdname in (select stdname from Student group by stdname having count(1)>1 ) order by stdname;
更新数据
update Student set score = 100 where stdname = "yangjian";
删除数据
truncate Student # 清除表中的所有数据
delete from Student where stdname = "yangjian";
索引
创建索引
alter table table_name add index index_name (column_list);
create index index_name on table_name (column_list);
删除索引
drop index index_name on talbe_name;
alter table table_name drop index index_name;
查看索引
show index from talbe_name;
注意:
下面创建出来的索引是两个不同的索引。
create index idx_student_name_id on Student (stdId,stdname); show index from Student; +---------+------------+---------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+---------+------------+---------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Stdunet | 1 | idx_student_name_id | 1 | stdId | A | 0 | NULL | NULL | | BTREE | | |
| Stdunet | 1 | idx_student_name_id | 2 | stdname | A | 0 | NULL | NULL | YES | BTREE | | |
+---------+------------+---------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
python操作mysql二的更多相关文章
- Python全栈开发之MySQL(二)------navicate和python操作MySQL
一:Navicate的安装 1.什么是navicate? Navicat是一套快速.可靠并价格相宜的数据库管理工具,专为简化数据库的管理及降低系统管理成本而设.它的设计符合数据库管理员.开发人员及中小 ...
- python + docker, 实现天气数据 从FTP获取以及持久化(二)-- python操作MySQL数据库
前言 在这一节中,我们主要介绍如何使用python操作MySQL数据库. 准备 MySQL数据库使用的是上一节中的docker容器 “test-mysql”. Python 操作 MySQL 我们使用 ...
- Python(九) Python 操作 MySQL 之 pysql 与 SQLAchemy
本文针对 Python 操作 MySQL 主要使用的两种方式讲解: 原生模块 pymsql ORM框架 SQLAchemy 本章内容: pymsql 执行 sql 增\删\改\查 语句 pymsql ...
- Python操作Mysql之基本操作
pymysql python操作mysql依赖pymysql这个模块 下载安装 pip3 install pymysql 操作mysql python操作mysql的时候,是通过”游标”来进行操作的. ...
- Python 操作 MySQL 之 pysql 与 ORM(转载)
本文针对 Python 操作 MySQL 主要使用的两种方式讲解: 原生模块 pymsql ORM框架 SQLAchemy 本章内容: pymsql 执行 sql 增\删\改\查 语句 pymsql ...
- Python开发【第十九篇】:Python操作MySQL
本篇对于Python操作MySQL主要使用两种方式: 原生模块 pymsql ORM框架 SQLAchemy pymsql pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb ...
- Day12(补充) Python操作MySQL
本篇对于Python操作MySQL主要使用两种方式: 原生模块 pymsql ORM框架 SQLAchemy pymsql pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb ...
- python 操作 mysql基础补充
前言 本篇的主要内容为整理mysql的基础内容,分享的同时方便日后查阅,同时结合python的学习整理python操作mysql的方法以及python的ORM. 一.数据库初探 在开始mysql之前先 ...
- mysql数据库----python操作mysql ------pymysql和SQLAchemy
本篇对于Python操作MySQL主要使用两种方式: 原生模块 pymsql ORM框架 SQLAchemy 一.pymysql pymsql是Python中操作MySQL的模块,其使用方法和MySQ ...
随机推荐
- C语言经典面试题目(转的,不过写的的确好!)
第一部分:基本概念及其它问答题 1.关键字static的作用是什么? 这个简单的问题很少有人能回答完全.在C语言中,关键字static有三个明显的作用: 1). 在函数体,一个被声明为静态的变量在这一 ...
- 【转】Emgu CV on C# (五) —— Emgu CV on 局部自适应阈值二值化
局部自适应阈值二值化 相对全局阈值二值化,自然就有局部自适应阈值二值化,本文利用Emgu CV实现局部自适应阈值二值化算法,并通过调节block大小,实现图像的边缘检测. 一.理论概述(转载自< ...
- nextval 遍历ResultSet,行列要从1开始
nextval nextval与序列关联,表示下一个,如:创建里一个序列seq_1:#序列一般表示第几行,起标识作用create sequence seq_1 increment by 1 start ...
- Angular2-给属性做双向绑定
呈现一个实体对象的DOM结构,这个DOM有个自定义属性是需要动态赋值的,比如说 item.data 要绑到自定义属性 data 上:你可能会这么写: data="{{item.data}}& ...
- JS实现最小生成树之普里姆(Prim)算法
最小生成树: 我们把构造连通网的最小代价生成树称为最小生成树.经典的算法有两种,普利姆算法和克鲁斯卡尔算法. 普里姆算法打印最小生成树: 先选择一个点,把该顶点的边加入数组,再按照权值最小的原则选边, ...
- 在ASP.NET中过滤HTML字符串总结
先记下来,以作备用! /// <summary>去除HTML标记 /// /// </summary> /// <param name="Htmls ...
- JAVA基础之——序列化和反序列化
1 概念 序列化,将java对象转换成字节序列的过程. 反序列化,将字节序列恢复成java对象的过程. 2 为什么要序列化? 2.1 实现数据持久化,当对象创建后,它就会一直在,但是在程序终止时,这个 ...
- CakePHP调用model类和foreach循环
1. 引入Model类 2.调用model类(Guarantee)下的getCity()方法 3.写sql语句 并返回获得值 4.foreach循环取得的城市
- SQL Server Metadata
http://www.devart.com/dotconnect/sqlserver/docs/MetaData.htmlhttps://msdn.microsoft.com/en-us/librar ...
- CF891E Lust
传送门 题目大意 你有 \(n\) 个数 \(a_1,a_2...a_n\) 要进行 \(k\) 次操作 每次随机选择一个数 \(x\),使得答案加上 \(\prod_{i \neq x}a_i\) ...