Python基础——mysql数据库、SQLAlchemy

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介:

一、MySQL常用操作

1、创建库

create database test;

2、创建表

create table student(id int not null);

3、授权一个用户

grant all privileges on *.* to 'username'@'%' identified by 'passwd';      其中%通配所有地址

4、查询

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

5、增加数据

insert into table_name (id, name, age, sex, grander) values (1, 'jsh', 25, 'M', 99), (2, 'Tom', 45, 'F', 88);

6、删除数据

delete from table_name  where 条件判断;
drop table table_name;      删除表

7、改数据(更新数据)

update table_name set id=10 where 条件判断;

8、联合查询

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

9、创建索引

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

10、查看SQL是否走索引

explain select * from student where name='JSH'

二、MySQL 数据库连接

1、Python2  使用mysqldb                      python3 使用 pymysql

2、创建链接  和 游标

     在mysql连接中,尽量使用一个连接,确保mysql的并发数

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

3、执行MySQL语句

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

4、关闭游标  和  链接

     注意结合try exception finally的使用

cus.close()
conn.close()

三、SQLAlchemy (对象关系映射)

1、创建引擎

engine = create_engine('mysql+pymysql://root:123456@192.168.6.137/sqlalchemy',echo=True)

2、创建session

DBsession = sessionmaker(bind=engine)
session = DBsession()

3、创建表

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

4、增加数据

a. 先要有一个模型
Base = declarative_base(0
class Student(Base):
    __tablename__ = 'student'
    id = Column(Integer, primary_key=True)
    name = Column(String(100), primary_key=True)
b. 导入模型类,实例化该类,
sutdent1 = Student(1, 'ling')
c. session.add(单实例)      session.add_all([实例1, 实例2])

5、查询

# filter和filter_by的区别
# filter:可以使用>  < 等,但是列必须是: 表.列,   filter的等于号是==
session.query(Student).filter(Student.id>100)
# filter 不支持组合查询
session.query(Student).filter(Studnet.id>100).filter(name='ling')
# filter_by: 可以直接写列,不支持< >  filter_by 等于是==
session.query(Student).filter_by(id==10)
# filter_by 可以支持组合查询
session.query(Student).filter_by(name='ling' and id='342')

# 模糊查询含有ling的关键字
select * from student where name like '%JSH%';
# 模糊查询
# session.query(Student).filter(Student.name.like('%JSH%'))
# 获取数据的时候有两个方法:
# one()   获取到的数据为 tuple
# all()   获取到的数据为 list(单个元素是tuple)
# 如果在查询中不写one(), 或者all()  得到的就是sql语句

6、更新

1. 先查出来
2. 跟新一下类所对应的属性值就ok
session.commit()
student1 = session.query(Student).filter(Student.id=1001)
student1.name = "test"
session.commit()

7、删除

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

8、统计count() 分组

# 只需要在查出来以后, 把one或者all替换成count()

9、分组 group_by

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

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2天前
|
SQL 关系型数据库 数据库连接
使用 Python 访问数据库的基本方法
【5月更文挑战第12天】在Python中操作数据库涉及安装数据库驱动(如mysql-connector-python, psycopg2, pymongo)、连接数据库、执行查询/更新、处理结果集及关闭连接。使用ORM(如SQLAlchemy)可简化操作。通过上下文管理器(with语句)能更好地管理资源和错误。注意根据实际需求处理事务、错误和安全性,例如使用SSL连接。
13 2
|
4天前
|
Oracle Java 关系型数据库
【服务器】python通过JDBC连接到位于Linux远程服务器上的Oracle数据库
【服务器】python通过JDBC连接到位于Linux远程服务器上的Oracle数据库
14 6
|
14天前
|
SQL 关系型数据库 MySQL
使用Python的pymysql库连接MySQL,执行CRUD操作
使用Python的pymysql库连接MySQL,执行CRUD操作:安装pymysql,然后连接(host=&#39;localhost&#39;,user=&#39;root&#39;,password=&#39;yourpassword&#39;,database=&#39;yourdatabase&#39;),创建游标。查询数据示例:`SELECT * FROM yourtable`;插入数据:`INSERT INTO yourtable...`;更新数据:`UPDATE yourtable SET...`;删除数据:`DELETE FROM yourtable WHERE...`。
27 0
|
15天前
|
API 数据库 Python
Python web框架fastapi数据库操作ORM(二)增删改查逻辑实现方法
Python web框架fastapi数据库操作ORM(二)增删改查逻辑实现方法
|
15天前
|
关系型数据库 MySQL API
Python web框架fastapi数据库操作ORM(一)
Python web框架fastapi数据库操作ORM(一)
|
15天前
|
SQL 关系型数据库 MySQL
Python操作mysql数据库
Python操作mysql数据库
|
19天前
|
缓存 NoSQL 关系型数据库
在Python Web开发过程中:数据库与缓存,MySQL和NoSQL数据库的主要差异是什么?
MySQL与NoSQL的主要区别在于数据结构、查询语言和可扩展性。MySQL是关系型数据库,依赖预定义的数据表结构,使用SQL进行复杂查询,适合垂直扩展。而NoSQL提供灵活的存储方式(如JSON、哈希表),无统一查询语言,支持横向扩展,适用于处理大规模、非结构化数据和高并发场景。选择哪种取决于应用需求、数据模型及扩展策略。
28 0
|
19天前
|
SQL 缓存 数据库
在Python Web开发过程中:数据库与缓存,如何使用ORM(例如Django ORM)执行查询并优化查询性能?
在Python Web开发中,使用ORM如Django ORM能简化数据库操作。为了优化查询性能,可以:选择合适索引,避免N+1查询(利用`select_related`和`prefetch_related`),批量读取数据(`iterator()`),使用缓存,分页查询,适时使用原生SQL,优化数据库配置,定期优化数据库并监控性能。这些策略能提升响应速度和用户体验。
18 0
|
6月前
|
关系型数据库 数据库 Python
Python连接DB2数据库
Python连接DB2数据库
|
2月前
|
SQL 关系型数据库 MySQL
用 Python 连接数据库并进行查询。
【2月更文挑战第12天】【2月更文挑战第32篇】用 Python 连接数据库并进行查询。