python如何用sqlalchemy操作数据库
工具:mysql python sqlalchemy
----------------------------------------
准备工作:
1.安装mysql
如果是window环境请参考 win7安装mysql
如果是linux环境请参考 linux安装mysql
2.安装python
windows: win7安装python2和python3
linux: linux安装python36
注:CentOS自带python2.6.6,如果要安装2.7.9以后的版本同样要通过源码包安装
3.基于python安装第三方库pymysql和sqlalchemy
pip install pymysql
pip install sqlalchemy pip3 install pymysql
pip3 install sqlalchemy
--------------------------------------------------------------------------
可以开始撸码了~~~~~~
我是基于python36写的,话不多说直接上代码吧
- 第一步:用mysql创建数据库

- 第二步:创建数据库连接
# encoding:utf-8
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, INTEGER, String
from sqlalchemy.orm import sessionmaker
HOST_NAME = '127.0.0.1' # 数据库所在服务器ip,因为我是本地数据库所以这里是127.0.0.1
HOST_PORT = '' # 数据库端口
DATABASE_NAME = 'pydb' # 数据库名
USER_NAME = 'root' # 链接数据的用户名
PWD = '' # 链接数据库的密码
# DB_URI是固定的格式,因为我的数据库是mysql,所以按照这个格式写就行了
DB_URI = 'mysql+pymysql://{0}:{1}@{2}:{3}/{4}?charset=utf8'.format(USER_NAME,PWD,HOST_NAME,HOST_PORT,DATABASE_NAME)
# 创建数据库连接
engine = create_engine(DB_URI)
- 第三步: 创建表
# -------------创建数据库--------------------------------------------------------------------------------
# 操作数据库的基类
Base = declarative_base(engine) class User(Base):
"""定义类其实就是创建一个表
create table user (
id int primary key auto_increment,
user_name varchar(50) not null,
password varchar(20) default '123456'
);
"""
__tablename__ = 'user' # 表名
id = Column(INTEGER,primary_key=True, autoincrement=True) # id字段,主键,自增
user_name = Column(String(50), nullable=False) # 用户名字段
password = Column(String(20), nullable=False, default='') # 密码字段 def __repr__(self):
"""定义数据库查询返回的数据格式"""
return 'User(id="%s",username="%s",password="%s")' % (self.id, self.user_name,self.password) Base.metadata.create_all()
查看数据库,创建成功

- 第四步: 插入数据
# ------------插入数据---------------------------------------------------------------------
# 创建会话
Session = sessionmaker(engine)
session = Session()
panda = User(user_name='panda', password='')
# 插入单条数据
session.add(panda)
user_list = []
# 插入多条数据
user_list.append(User(user_name='test1', password=''))
user_list.append(User(user_name='test2', password=''))
user_list.append(User(user_name='test3', password=''))
session.add_all(user_list)
session.commit()
查看数据库已经添加成功

- 第五步:查询数据
# select top 1 from user;
res_first = session.query(User).first()
print(res_first)
# select *from user;
res_all = session.query(User).all()
print(res_all)
# select *from user where user_name='panda';
res_panda = session.query(User).filter_by(user_name='panda').all()
print(res_panda)
# select *from user where user_name='panda';
res = session.query(User).filter(User.user_name == 'panda').all()
print(res)
运行结果如下,这里返回的格式是以class类的__repr__方法定义的

- 第六步: 更新数据
# update user set password = '654321' where user_name='panda';
res = session.query(User).filter(User.user_name == 'panda').all()[0]
res.password = ''
session.commit()
查看数据库已经更新成功

- 第七步: 删除数据
# delete from user where id=3;
res = session.query(User).filter_by(user_name='test3').all()[0]
session.delete(res)
session.commit()
查看数据库已经删除成功

python如何用sqlalchemy操作数据库的更多相关文章
- Python3.x:SQLAlchemy操作数据库
Python3.x:SQLAlchemy操作数据库 前言 SQLAlchemy是一个ORM框架(Object Rational Mapping,对象关系映射),它可以帮助我们更加优雅.更加高效的实现数 ...
- 使用python简单连接并操作数据库
python中连接并操作数据库 图示操作流程 一.使用的完整流程 # 1. 导入模块 from pymysql import connect # 2. 创建和数据库服务器的连接,自行设置 服务器地址, ...
- 04:sqlalchemy操作数据库
目录: 1.1 ORM介绍(作用:不用原生SQL语句对数据库操作) 1.2 安装sqlalchemy并创建表 1.3 使用sqlalchemy对表基本操作 1.4 一对多外键关联 1.5 sqlalc ...
- 04:sqlalchemy操作数据库 不错
目录: 1.1 ORM介绍(作用:不用原生SQL语句对数据库操作) 1.2 安装sqlalchemy并创建表 1.3 使用sqlalchemy对表基本操作 1.4 一对多外键关联 1.5 sqlalc ...
- python学习笔记:操作数据库
1.下载安装模块 第一种:cmd下:执行命令下载安装:pip3 install pymysql 第二种:IDE下pycharm python环境路径下添加模块 2.连接数据库 import pymys ...
- SQLAlchemy 操作数据库
首先安装 SQLAlchemy install PyMySQL install sqlalchemy 代码: #!/usr/bin/env python # encoding: utf-8 " ...
- python自定义ORM并操作数据库
看这个代码之前先去看上篇文章,理解type的用法及元类的含义: ORM可以代替pymysql,实现将python语义装换为sql语句,简单化 import pymysql ''' metaclass, ...
- python测试开发django-13.操作数据库(增删改查)
前言 django的models模块里面可以新增一张表和字段,通常页面上的数据操作都来源于数据库的增删改查,django如何对msyql数据库增删改查操作呢? 本篇详细讲解django操作mysql数 ...
- sqlalchemy操作数据库(二)
sqlalchemy的基本操作 表结构如下: from sqlalchemy import create_enginefrom sqlalchemy.ext.declarative importdec ...
随机推荐
- Windows 性能监视器的基本指标(CPU,内存,硬盘参数)
转载:http://kms.lenovots.com/kb/article.php?id=7045 Windows 性能监视器的基本指标(CPU,内存,硬盘参数) 作为一个系统工程师来说,要看懂监控的 ...
- Python学习笔记四:主要图表
图表部分,很多要记忆的.以下来自于培训材料的记录. 但我个人觉得更重要的是要根据业务特点确定用什么样的图表,然后再去查具体的参数,光记住参数意义不是很大. import numpy as np imp ...
- R语言读写数据
R语言读写数据 一般做模型的时候,从外部的excel中读入数据,我现在常用的比较多的是read_csv(file) 读入之前先把excel数据转化成.csv格式 同样的把结果输出来的时候用的是writ ...
- UnicodeDecodeError: 'gbk' codec can't decode byte 0xfe in position 45: illegal multibyte sequence
常见的一种解码错误如题目所示,下面介绍该错误的解决方法 (1).首先在打开文本的时候,设置其编码格式,如:open(‘1.txt’, encoding=’gbk’): (2).若(1)不能解决,可能是 ...
- 题解【AcWing487】金明的预算方案
题面 有依赖的背包问题模板题. 我们观察到 每个主件可以有 0 个.1 个或 2 个附件 , 于是考虑对于每一个主件,我们用枚举子集的方式枚举使用哪一些附件, 然后就是一个经典的分组背包问题了. 注意 ...
- 题解【AcWing95】费解的开关
题面 一道非常好的递推练习题. 我们考虑每次枚举第一行的操作,由上一行的状态递推出下一行的状态,最后判断最后一行是否全部为 \(1\) 即可. 实现代码时要注意一些细节问题. #include < ...
- Quartz.NET 2.x教程
第1课:使用Quartz第2课:工作和触发器第3课:关于工作和JobDetails的更多信息第4课:有关触发器的更多信息第5课:SimpleTriggers第6课:CronTriggers第7课:Tr ...
- Day5 多线程 锁
synchronized保证操作原子性 这是因为对变量进行读取和写入时,结果要正确,必须保证是原子操作.原子操作是指不能被中断的一个或一系列操作. 通过加锁和解锁的操作,就能保证3条指令总是在一个线程 ...
- 你所不知道的Hello World[C++实现]
要说OIer界内最简单的程序,那恐怕非Hello World莫属了, 那么这篇文章就介绍如何写Hello World(被打). 最简单的一种实现: #include <iostream> ...
- 2018护网杯easy_tornado(SSTI tornado render模板注入)
考点:SSTI注入 原理: tornado render是python中的一个渲染函数,也就是一种模板,通过调用的参数不同,生成不同的网页,如果用户对render内容可控,不仅可以注入XSS代码,而且 ...