一、Mysql命令总结

1.创建库

  1. create database test1;

2.授权一个用户

  1. grant all privileges on *.* to 'feng'@'%' identified by '1qaz@WSX';

3.创建表

  1. create table Teacher(
  2. teaId int not null,
  3. teaname varchar(100),
  4. age int,
  5. sex enum('M', 'F'),
  6. phone int);

4.查询

  1. select * from tabel_name where 条件1 and  条件2

5.增加

  1. insert into table_name (id, name, age, sex, grander) values (1, 'feng', 30, 'M', 99), (2, 'ajing', 45, 'F', 88);

6.修改

  1. update table_name set id=10 where 条件判断

7.删除

  1. delete from table_name  where 条件判断
  2. drop table table_name

8.联合查询

  1. select a.id, b.name from A a join B b on a.id=b.tid

9.创建索引

  1. create index idx_库名_表名_列名1_列名2 (列名1 列名2)

10.查看sql是否走索引

  1. explain select * from student where name='ling'

11.链接数据库

Python2 使用的是MySQLdb
python3 使用的pymysql  pip安装

 (1) 创建链接和游标
注意:在mysql连接中,尽量使用一个连接,确保mysql的并发数

  1. conn = pymysql.connect(host='', port=, user='', passwd='', db='')
  2. cus = conn.curse()

(2)执行sql

  1. sql = "select * from Student;"
  2. cus.execute(sql)
  3. cus.fetchone()  获取单个  返回值  tuple
  4. cus.fetchall()  获取多个  返回值  list(单个元素是tuple
  5. cus.fetchmany(size=n)  获取多个

(3) 关闭游标和连接

  1. cus.close()
  2. conn.close()

注意结合try exception finally的使用

二、SQLAlchemy操作总结

1. 创建引擎

  1. engine = create_engine('mysql+pymysql://username:password@hostname:port/db')

2. 创建session

  1. DBsession = sessionmaker(bind=engine)
  2. session = DBsession()

3.创建表

  1. a. 获得engine
  2. b. metadata = MetaData(engine)
  3. c. student = Table('表名', metadata, Colume('id', Integer, primary_key=True), Colume('name', String(50))
  4. d. metadata.create_all()

4.增加

(1) 先要有一个模型

  1. Base = declarative_base(0
  2. class Student(Base):
  3.     __tablename__ = 'student'
  4.     id = Column(Integer, primary_key=True)
  5.     name = Column(String(100), primary_key=True)

(2)导入模型类,实例化该类,

  1. sutdent1 = Student(1, 'ling')
  2. c. session.add(单实例)      session.add_all([实例1, 实例2])

5. 查询

  1. filterfilter_by的区别
  2. filter:可以使用>  < 等,但是列必须是: 表.列,   filter的等于号是==
  3. session.query(Student).filter(Student.id>100)
  4. filter 不支持组合查询
  5. session.query(Student).filter(Studnet.id>100).filter(name=='ling')
  6. filter_by 可以直接写列,不支持< >  filter_by 等于是==
  7. session.query(Student).filter_by(id==10)
  8. filter_by 可以支持组合查询
  9. session.query(Student).filter_by(name=='ling' and id=='342')
  10. select * from student where name like '%ling%';
  11. 模糊查询含有ling的关键字

模糊查询

  1. session.query(Student).filter(Student.name like('%ling%'))

获取数据的时候有两个方法:
one()   tuple
all()   list(单个元素是tuple)
如果在查询中不写one(), 或者all()  出来的就是sql语句

6. 更新

(1) 先查出来
(2) 跟新一下类所对应的属性值就ok
(3) session.commit()

  1. student1 = session.query(Student).filter(Student.id==1001)
  2. student1.name = "test"
  3. session.commit()

7. 删除

(1)先查出来
(2)直接调用delete()方法就可以
(3) 提交一下

8.统计, 分组,排序

统计:count()
只需要在查出来以后, 把one或者all替换成count()
统计有多少个

分组:group_by
查出来以后,把one或者all替换成group_by(属性)

Python之Mysql及SQLAlchemy操作总结的更多相关文章

  1. python对mysql进行简单操作

    python 连接MySQL数据库,进行简单操作 一.连接MySQL数据库,关闭连接 import pymysql db = pymysql.connect(host="xxx.xxx.x. ...

  2. Python在mysql中进行操作是十分容易和简洁的

    首先声明一下,我用的是Windows系统! 1.在Python中对mysql数据库进行操作首先要导入pymysql模块,默认情况下,Python中是没有安装这个模块的, 可以在Windows的命令行中 ...

  3. python中mysql数据库的操作-sqlalchemy

    MySQLdb支持python2.*,不支持3.* ,python3里面使用PyMySQL模块代替 python3里面如果有报错  django.core.exceptions.ImproperlyC ...

  4. Python之MySQL库表操作

    一:库操作 1.1 增 # 语法 # create database 库名 default charset utf8; create database db1 default charset utf8 ...

  5. python之MySQL学习——数据操作

    1.增 import pymysql as ps # 打开数据库连接 db = ps.connect(host=', database='test', charset='utf8') # 创建一个游标 ...

  6. python之(mysql数据库操作)

    前言:关心3步骤(此文章只针对python自动化根基展开描述) 什么是mysql数据库操作?  答:利用python对mysql数据库进行增, 删, 改, 查 操作 为什么要用python对mysql ...

  7. 通过python给mysql建表

    一.python连接mysql from sqlalchemy import create_engine # 数据库数据 HOSTNAME = '127.0.0.1' # linux本地 PORT = ...

  8. Python操作MySQL之SQLAlchemy

      SQLAlchemy是Python编程语言下的一款ORM框架,该框架建立在数据库API之上,使用关系对象映射进行数据库操作,简言之便是:将对象转换成SQL,然后使用数据API执行SQL并获取执行结 ...

  9. python对Mysql操作和使用ORM框架(SQLAlchemy)

    python对mysql的操作 Mysql 常见操作 数据库操作 创建数据库 create database fuzjtest 删除数据库 drop database fuzjtest 查询数据库 s ...

随机推荐

  1. B5248 [2018多省省队联测]一双木棋 状压dp

    这个题当时划水,得了二十分,现在来整一整. 这个题用状压来压缩边界线,然后通过记忆化搜索进行dp.我们可以观察到,其实每次转移,就是把一个1向左移一位.最后的状态设为0. 这其中还要有一个变量来记录谁 ...

  2. PCB MS SQL 通过表名查询各字段信息和vb.net C# module类代码

    正式表:各字段内容获取 ) SET @tabname = 'ppeflow' SELECT @tabname AS '表名' ,(CASE ))+ ')' )) ) )) + ')' )) ) )) ...

  3. 洛谷P1725琪露诺(单调队列优化dp)

    P1725 琪露诺 题目描述 在幻想乡,琪露诺是以笨蛋闻名的冰之妖精.某一天,琪露诺又在玩速冻青蛙,就是用冰把青蛙瞬间冻起来.但是这只青蛙比以往的要聪明许多,在琪露诺来之前就已经跑到了河的对岸.于是琪 ...

  4. es6入门6--数组拓展运算符,Array.from()基本用法

    本文只是作为ES6入门第九章学习笔记,在整理知识点的同时,会加入部分个人思考与解答,若想知道更详细的介绍,还请阅读阮一峰大神的ES6入门 一.拓展运算符 ES6中新增了拓展运算(...)三个点,它的作 ...

  5. 前端布局神器 display:flex

    前端布局神器display:flex 一直使用flex布局,屡试不爽,但是总是记不住一些属性,这里写来记录一下.   2009年,W3C提出了一种新的方案--Flex布局,可以简便.完整.响应式地实现 ...

  6. Android几种常见的多渠道(批量)打包方式介绍

    多渠道打包,主要是为了统计不同的渠道上包的下载数量,渠道越多,我们需要打的包数量越多,这个时候,我们没法去使用单纯的手动打包去一个一个的生成不同的渠道包,我们需要更高效的打包方式. 声明渠道方式一: ...

  7. android黑科技系列——Apk混淆成中文语言代码

    一.前言 最近想爆破一个app,没有加壳,简单的使用Jadx打开查看源码,结果把我逗乐了,代码中既然都是中文,而且是一些比较奇葩的中文字句,如图所示: 瞬间感觉懵逼了,这app真会玩,我们知道因为Ja ...

  8. dhtmlxtree动态加载节点数据的小随笔

    最近做了一个这个东西,颇有些感触,随笔记录一下自己的过程. 首先特别感谢:https://blog.csdn.net/cfl20121314/article/details/46852591,对我的帮 ...

  9. 能够附加图片的标签控件iOS项目源码

    这个源码案例是能够附加图片的标签控件,源码JTImageLabel,JTImageLabel能够附加图片的标签Label控件,图片可以随意更换.位置也能够很好的控制.效果图: <ignore_j ...

  10. AMQP及RabbitMQ

    AMQPAMQP协议是一个高级抽象层消息通信协议,RabbitMQ是AMQP协议的实现.它主要包括以下组件: 1.Server(broker): 接受客户端连接,实现AMQP消息队列和路由功能的进程. ...