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 ...
随机推荐
- 4 Values whose Sum is 0 UVA 1152
题目链接:https://vjudge.net/problem/UVA-1152 这题题意就是在四个集合内.每个集合分别里挑一个数a,b,c,d,求a+b+c+d=0有多少种选法. 暴力的话就是四重循 ...
- vue中jquery详情
jQuery基本语法 $(selector).action() 基本选择器:$("#id") 标签选择器:$("tagName") class选择器:$(&qu ...
- Coxeter积分计算
\begin{align*}&\int_0^{\frac{\pi}{3}}{\arccos \left( \frac{1-\cos x}{\text{2}\cos x} \right) dx} ...
- grep/sed/awk命令查看指定时间段的日志
*grep命令 今天遇到研发要求查询定时任务(elastic-job)在14:00-14:40的日志,使用grep命令很方便: 命令: grep '时间' '日志文件名 ' 1.例如查询2020-02 ...
- HP大中华区总裁孙振耀退休感言
HP大中华区总裁孙振耀退休感言 : 如果这篇文章没有分享给你,那是我的错. 如果这篇文章分享给你了,你却没有读,继续走弯路的你不要怪我. 如果你看了这篇文章,只读了一半你就说没时间了,说明你已经是个“ ...
- sql 按天及上午下午分组
),r.CTime,), then '下午' end as k, count(*) from Record as r left join Channel as c on r.ChannelId=c.I ...
- HTML文本域标签
textarea文本域 cols指定列数 rows行数(不够用会自动扩容)
- python面试的100题(13)
29.Given an array of integers 给定一个整数数组和一个目标值,找出数组中和为目标值的两个数.你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用.示例:给定nums ...
- 2019-08-09 纪中NOIP模拟B组
T1 [JZOJ1035] 粉刷匠 题目描述 windy有N条木板需要被粉刷. 每条木板被分为M个格子. 每个格子要被刷成红色或蓝色. windy每次粉刷,只能选择一条木板上一段连续的格子,然后涂上一 ...
- 少年的u
发现了我提取DNa的过程存在问题,能够跑出action 但是不能克隆出基因.老师给我解释了为什么,说是我的DNA质量不是很高.但是在接下来的时间我会解决这个问题. 和师姐一起去上面的实验室,看了定量P ...