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 ...
随机推荐
- [PY3]——IO——pathlib
pathlib.Path() from pathlib import Path p=Path("/test2") Path.cwd() print(p.cwd()) /py3 Pa ...
- 如何快速备份还原Sql Server 数据库
备份数据库 选择你要备份的数据库,鼠标右键单击,选择任务-备份 弹出备份数据库窗口,选择添加 弹出选择备份目标窗口,点击浏览,选择存放备份数据库的目录,输入文件名,后缀名输入.bak,点击确定,确定, ...
- php中类和对象的操作
在类中用$this指代对象本身. 用self::指代类本身. $p1 = new Person('michael');//向Person类的构造函数__construct中传名字 echo($p1-& ...
- MySQL---7、常用操作
1.表列的添加.修改和删除 2.视图 3.字符集和校对集 4.触发器相关知识
- sdfsdfsdf
i- i- i-1i- i- i- i- i- i-
- ORB-SLAM2实现(kinect V1/ROS)
实验室电脑环境ubuntu14.04和ROS indigo已经装好. 1. 构建工作空间[非常重要的一步] mkdir -p ~/catkin_ws/src cd ~/catkin_ws/ catki ...
- javaweb项目中绝对路径的写法理解
Tomcat的默认访问路径为http://localhost:8080,后需添加项目路径. 请求转发,是转发到本项目中的其他文件,所以在默认访问路径中添加了本项目的项目路径,故可以省略项目名称: re ...
- C# 圆角button
因为自带的button是尖角的不太好看 这里在网上找的一份代码改改做个自用的button,画的操作不局限于button也可以画其他的 using System; using System.Collec ...
- border实现三角形的原理
前言:网上最普遍的实现三角形的方法,就是通过控制border来实现,那为什么可以呢? 原理 我们先来看看border的表现形式. #box{ width:100px; height:100px; ba ...
- attr()与prop()之全选、反选问题
获取js dom原生属性的时候最好用prop()方法,获取自己添加的属性时用attr() 原文:http://blog.sina.com.cn/s/blog_bf5ce8cc0102vuyt.html ...