基于Python的SQLAlchemy的操作
安装
在Python使用SQLAlchemy的首要前提是安装相应的模块,当然作为python的优势,可以到python安装目录下的scripts下,同时按住shift+加上鼠标左键,从而在菜单中打开命令行
使用:1.pip3 install pymysql 2.pip3 install sqlalchemy两个命令从而安装需要的模块
使用
在使用之前首先需要建相应的数据库,而不需要建立表。下面开始:
相关模块导入
import sqlalchemy from sqlalchemy import create_engine from sqlalchemy.ext.declarative import declarative_base from sqlalchemy import Column, Integer, String, ForeignKey, UniqueConstraint, Index from sqlalchemy.orm import sessionmaker, relationship from sqlalchemy import and_,or_
建立连接
engine = create_engine("mysql+pymysql://root:123456@127.0.0.1:3306/pythondatabase")
engine = create_engine("mysql+pymysql://root:123456@127.0.0.1:3306/pythondatabase?charset=utf8", echo = True)
#建立连接
#当然推荐上面第二种的方式,一是可以支持中文,二是可以在Pycharm_console中看到创建过程Base = declarative_base() #建立基类,就是数据库
创建表
class Users(Base):
__tablename__ = 'user1' #创建表名
id = Column(Integer,primary_key=True,autoincrement=True)
#设立自增,主键等
username = Column(String(20),index=True)#建立索引
password = Column(String(20),unique=True)#代表唯一
def __repr__(self):#可加入从而查看表的属性 return self.username#如
生成表与删掉表
def init_db():
Base.metadata.create_all(engine)
def drop_db():
Base.metadata.drop_all(engine)
#可直接写,也可以以两个函数的方式使用,反正都是一样
增删改查
这个需要首先建立session对象,从而进一步使用增删改查
MySession = sessionmaker(bind=engine) session = MySession()#session提供响应的增删改查
增加(一个)
ed_user = Users(id=5,username=") session.add(ed_user) session.commit()
增加(多个)
session.add_all([
Users(id=6,username='),
Users(id=7,username='),
])
session.commit()#实现操作,但凡涉及修改都需要commit()
删除
session.query(Users).filter(Users.id > 2).delete() session.commit() #这个和sql语句差不多
改变
session.query(Users).filter(Users.id > 2).update({"})
session.query(Users).filter(Users.id > 2).update({Users.username: Users.username + "}, synchronize_session=False)
session.query(Users).filter(Users.id > 2).update({"num": Users.num + 1}, synchronize_session="evaluate")
session.commit()
查询
session.query(Users).all()
#查询所有
for row in session.query(Users).order_by(Users.id):
print(row)
#查询按照 id排序
for row in session.query(Users).filter(and_(Users.id==5,Users.username=="liming")):
print(row)
for row in session.query(Users).filter(or_(Users.username=="alex1",Users.username=="liming")):
print(row)
#设置过滤条件
print(session.query(Users))#在没有.all的条件下是其原生方法
等待补充。。。。。
基于Python的SQLAlchemy的操作的更多相关文章
- scapy - 基于python的数据包操作库
简介 地址:https://github.com/secdev/scapy scapy是一个基于python的交互式数据包操作程序和库. 它能够伪造或者解码多种协议的数据包,通过使用pcap文件对他们 ...
- python扫描器-sqlalchemy入库操作
学习 [Python]Flask系列-数据库笔记 实践 #!/usr/bin/env python # -*- coding: utf-8 -*- from sqlalchemy import cre ...
- Python_基于Python同Linux进行交互式操作实现通过堡垒机访问目标机
基于Python同Linux进行交互式操作实现通过堡垒机访问目标机 by:授客 QQ:1033553122 欢迎加入全国软件测试交流群:7156436 实现功能 1 测试环境 1 代码实践 2 注 ...
- 基于Python项目的Redis缓存消耗内存数据简单分析(附详细操作步骤)
目录 1 准备工作 2 具体实施 1 准备工作 什么是Redis? Redis:一个高性能的key-value数据库.支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使 ...
- 基于Python操作redis介绍
(注:本文部分内容摘自互联网,由于作者水平有限,不足之处,还望留言指正.) 毕业前的最后一个学期(2016.03),龙哥结婚了.可是总有些人喜欢嘲笑别人,调侃我.当时我就理直气壮的告诉他们,等龙哥孩子 ...
- 《Flask Web开发——基于Python的Web应用开发实践》一字一句上机实践(上)
目录 前言 第1章 安装 第2章 程序的基本结构 第3章 模板 第4章 Web表单 第5章 数据库 第6章 电子邮件 第7章 大型程序的结构 前言 学习Python也有一个半月时间了,学到现在感觉 ...
- SQLAlchemy表操作和增删改查
一.SQLAlchemy介绍 SQLAlchemy是一个基于Python实现的ORM框架.该框架建立在 DB API之上,使用关系对象映射进行数据库操作,简言之便是:将类和对象转换成SQL,然后使用数 ...
- python之sqlalchemy使用
一.介绍 SQLAlchemy是一个基于Python实现的ORM框架.该框架建立在 DB API之上,使用关系对象映射进行数据库操作,简言之便是:将类和对象转换成SQL,然后使用数据API执行SQL并 ...
- Python Flask SQLALchemy基础知识
一.介绍 SQLAlchemy是一个基于Python实现的ORM框架.该框架建立在 DB API之上,使用关系对象映射进行数据库操作,简言之便是:将类和对象转换成SQL,然后使用数据API执行SQL并 ...
随机推荐
- 使用Navicat Premium对sqlserver 2008进行表、字段及用户权限的精细化管理
在一些特殊的业务场景,我们需要对数据库进行精细化的管理,比如只能授权给某用户某个表的操作权限,最小权限法则可以保障数据库最大的安全.利用navicat这个轻量化的工具可以很轻松的解决这个问题 1.通过 ...
- MyBatis返回Map键值对数据
List<Map<String, String>> getMtypeList(); <select id="getMtypeList" resultT ...
- Expm 1_1 实现基于分治法的归并排序算法.
package org.xiu68.exp.exp1; public class Exp1_1 { public static void main(String[] args) { // TODO A ...
- python下图像读取方式以及效率对比
https://zhuanlan.zhihu.com/p/30383580 opencv速度最快,值得注意的是mxnet的采用多线程读取的方式,可大大加速
- LeetCode(2):Add Two Numbers 两数相加
Medium! 题目描述: 给定两个非空链表来表示两个非负整数.位数按照逆序方式存储,它们的每个节点只存储单个数字.将两数相加返回一个新的链表. 你可以假设除了数字 0 之外,这两个数字都不会以零开头 ...
- Chakra调试笔记 TypedArray
一.TypedArray类型 TypedArray是漏洞中常见到的结构,手册用法有四 1.new TypedArray(length); //byteLength=length * sizeof(Ty ...
- Ext.js入门:TabPanel组件(八)
一:TabPanel组件简介 二:简单代码示例 三:使用iframe作为tab的标签页内容 四:动态添加tabpanel的标签页 五:为tabpanel标签页添加右键菜单 方式一: <html ...
- hdu 1025 上面n个点与下面n个点对应连线 求最多能连有多少条不相交的线 (LIS)
题目大意有2n个城市,其中有n个富有的城市,n个贫穷的城市,其中富有的城市只在一种资源富有,且富有的城市之间富有的资源都不相同,贫穷的城市只有一种资源贫穷,且各不相同,现在给出一部分贫穷城市的需求,每 ...
- jsp+servlet实现文件的上传和下载
实现文件的上传和下载首先需要理解几个知识,这样才可以很好的完成文件的上传和下载: (1):上传文件是上传到服务器上,而保存到数据库是文件名 (2):上传文件是以文件转换为二进制流的形式上传的 (3): ...
- 【转载】和 Thrift 的一场美丽邂逅
http://www.cnblogs.com/cyfonly/p/6059374.html 一. 与 Thrift 的初识 也许大多数人接触 Thrift 是从序列化开始的.每次搜索 “java序列化 ...