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 ...
随机推荐
- Linux笔记-Linux下编辑器的简介
在整个linux中,我们使用最多的编译器真的vim了,全名我也不说了,没有多大意义,我们就是通过它来写我们的代码的.如果你有强迫症的话,那么选择使用gedit我也是没话说的啦! 话说其实我也在使用一些 ...
- 常用的几种OCR方法/组件小结(C#)
数字.英文识别比较容易.中文识别主要存在两个问题:其一,有可能误识别.其二.需要随带几十兆的识别库(甚至更大). 适合C#编程引用的中文ocr技术,查到以下两种: 1.使用开源的Tessera ...
- 行人检测4(LBP特征)
参考原文: http://blog.csdn.net/zouxy09/article/details/7929531 http://www.cnblogs.com/dwdxdy/archive/201 ...
- 关于C#的强制转换和尝试转换的方法
将String[]类型的Object类型,转换为String[]类型: public string ObjectToString(object ob) { string str = string.Em ...
- 获取用户Ip地址通用方法
1 public static function getIp() 2 { 3 if ($HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"]) 4 { ...
- [javaSE] GUI(Action事件)
对自己定义的类规范化一下,事件和图形化组件分离出来 定义一个类FrameDemo 定义成员属性Frame frame 定义成员属性Botton 定义构造方法FrameDemo() 定义初始化方法ini ...
- Java求一个数组中的最大值和最小值
原创作品,转载请注明出处:https://www.cnblogs.com/sunshine5683/p/9927186.html 今天在工作中遇到对一个已知的一维数组取出其最大值和最小值,分别用于参与 ...
- POJ 1789(最小生成树)
这题要把给的字符串变成边的权值 #include <cstdio> #include <iostream> #include <queue> #include &l ...
- VC+++ 操作word
最近完成了一个使用VC++ 操作word生成扫描报告的功能,在这里将过程记录下来,开发环境为visual studio 2008 导入接口 首先在创建的MFC项目中引入word相关组件 右键点击 项目 ...
- BZOJ4568: [Scoi2016]幸运数字(线性基 倍增)
题意 题目链接 Sol 线性基是可以合并的 倍增维护一下 然后就做完了?? 喵喵喵? // luogu-judger-enable-o2 #include<bits/stdc++.h> # ...