python ORM - sqlalchemy 操作使用
python操作数据库
使用 ORM - sqlalchemy,pymsql
安装:
pip install pymsq pip install sqlalchemy
一、 '''连接数据库'''
'''导入必须的包'''from sqlalchemy import create_engine from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import sessionmaker
# 基本设置 HOSTNAME = '127.0.0.1' # 本地 liunx POST = '3306' # mysql 默认端口 DATABASE = 'mydb' # 数据库名字 USERNAME = 'admin' # 用户名 PASSWORD = 'Root110qwe' # 密码
# 固定写法db_url = 'mysql+pymysql://{}:{}@{}:{}/{}?charset=utf8'.format(USERNAME,PASSWORD,HOSTNAME,POST,DATABASE )# 这里的 db_url 就是连接数据库的路径。“mysql+mysqldb”指定了使用 MySQL-Python 来连
engine = create_engine(db_url,echo=False) # 初始化数据库连接,
# create_engine() 会返回一个数据库引擎,echo 参数为 True 时,会显示每条执行的 SQL 语句,生产环境下可关闭。 Base = declarative_base(engine)Session = sessionmaker(engine)
# 创建对象的基类
session = Session()
# 创建与数据库连接的Session类
# session可以视为数据库连接# sessionmaker() 会生成一个数据库会话类。这个类的实例可以当成一个数据库连接,它同时还记录了一些查询的数据,并决定什么时候执行 SQL 语句。
if __name__ == '__main__': # 测试是否连接成功connection = engine.connect()result = connection.execute('select 1')print(result.fetchone())
二 、 '''创建 类—表 映射关系'''
创建表的同时,也映射数据库;也可以单独创建表,
# -*- coding:utf-8 -*-from datetime import datetime from sqlalchemy import Column,Integer,String,DateTime from connect import Base,session # 这里connect前面加上点之后 不能直接执行文件,但是可以外部调用'''创建表 user ''' class User(Base):__tablename__ = 'user'id = Column(Integer,primary_key=True,autoincrement=True) #主键 ,自增长username = Column(String(20),nullable=False) # 用户名长度 20 、非空password = Column(String(50)) # 密码长度 50creatime = Column(DateTime,default=datetime.now) # 创建时间 @classmethoddef by_name(cls,name): # 定义查询函数,返回查询结果return session.query(cls).filter(cls.username==name).first()def __repr__(self): # 重写repr 便于阅读return "<User(id=%s,username%s,password=%s,createtime=%s)>" % (self.id,self.username,self.password,self.creatime)from sqlalchemy.orm import relationship from sqlalchemy import ForeignKey'''创建表 user_details ''' class UserDetails(Base):__tablename__='user_details'id = Column(Integer, primary_key=True, autoincrement=True)id_card = Column(Integer,nullable=True,unique=True)lost_login = Column(DateTime)login_num = Column(Integer,default=0)user_id = Column(Integer,ForeignKey('user.id'))'''User 要关联的表的名字backref 返回 details 方法(属性)uselist 默认为True, 表示一对多关系(False表示一对一)cascade 自动处理关系 相当于mysql中的ON DELETE 类似 有 7 个可选参数在代码层控制'''userdetail = relationship('User',backref='details',uselist=False,cascade='all')def __repr__(self): # 重写repr 便于阅读return '<UserDetails(id=%s,id_card=%s,last_login=%s,login_num=%s,user_id=%s)>'%(self.id,self.id_card,self.lost_login,self.login_num,self.user_id)from sqlalchemy import Table''' 创建表的另一种方法 这种方法没有映射,如果需要映射 还需重新创建 类,重写 repr''' user_article = Table('user_article',Base.metadata,Column('user_id',Integer,ForeignKey('user.id'),primary_key=True),Column('article_id',Integer,ForeignKey('article.id'),primary_key=True))
'''创建表 article ''' class Article(Base):__tablename__ = 'article'id = Column(Integer,primary_key=True,autoincrement=True)content = Column(String(50),nullable=True)create_time = Column(DateTime,default=datetime.now())article_user = relationship('User',backref='article',secondary=user_article)# 创建映射关系def __repr__(self): # 重写repr 便于阅读return 'Article(id=%s,content=%s,create_time=%s)'%(self.id,self.content,self.create_time)if __name__ == '__main__':Base.metadata.create_all() # 执行
三 、 '''简单的 增、删、查、改 操作 '''
# -*- coding:utf-8 -*- from connect import session from user_module import Userdef add_user(): # 增# persson = User(username='xiaohong',password='qwe123',id=1)# session.add(persson) # 提交单条数据# 一次提交多条数据 , 注意 这里 all 里面是列表 session.add_all([User(username='小红', password='qwe123mmm'),User(username='老王', password='12345nnnnn'),User(username='小明', password='654321hhhhh'),])session.commit() # 必须提交def search_user(): # 查询 默认repr 便于机器阅读,需要重写rows = session.query(User).all()print(rows)def update_user(): # 改session.query(User).filter(User.id==2).update({User.password:1})session.commit()def delete_user(): # 删除# rows = session.query(User).filter(User.id==2)[0]rows = session.query(User).all()print(rows)for i in rows: # 如果查到的数据量大,就是用循环删除 session.delete(i)session.commit()if __name__ == '__main__':add_user()# search_user()# delete_user()# update_user()
推荐文章:廖雪峰的 使用SQLAlchemy
脚本之家的 Python SQLAlchemy基本操作和常用技巧(包含大量实例,非常好)
z+j 的 Python SqlAlchemy使用方法
K.Takanashi 的 SQLAlchemy的初步使用
SQLAlchemy入门(一)
转载于:https://www.cnblogs.com/zlsgh/p/8538911.html
python ORM - sqlalchemy 操作使用相关推荐
- 【tips】ORM - SQLAlchemy操作MySQL数据库
优先(官方文档SQLAlchemy-version1.2): sqlalchemy | 作者:斯芬克斯 推荐一(长篇幅version1.2.0b3):python约会之ORM-sqlalchemy | ...
- 使用python ORM来操作MySQL
昨天的博客是用MySQL官方的MySQL-connector驱动来完成数据库的连接和使用,但只适用于小项目的操作,当项目规模增加时,代码会越来越复杂,维护成本也越来越高,此时需要一个更好的设计模式.即 ...
- python画圆填色橙色_基于TPC-C基准的Python ORM的性能测试详解
当开发与数据库需要在一起使用的应用程序时,对象关系映射器(ORM)通常用于Python编程中.Python ORM的示例是SQLAlchemy,Peewee,Pony-ORM和Django.选择ORM ...
- flask 操作mysql的两种方式-sqlalchemy操作
flask 操作mysql的两种方式-sqlalchemy操作二.ORM sqlalchemy操作#coding=utf-8 # model.pyfrom app import dbclass Use ...
- python sqlalchemy中文手册-基于Python的SQLAlchemy的操作
安装 在Python使用SQLAlchemy的首要前提是安装相应的模块,当然作为python的优势,可以到python安装目录下的scripts下,同时按住shift+加上鼠标左键,从而在菜单中打开命 ...
- python orm框架sqlalchemy_python orm 框架中sqlalchemy用法实例详解
本文实例讲述了python orm 框架中sqlalchemy用法.分享给大家供大家参考,具体如下: 一.ORM简介 1. ORM(Object-Relational Mapping,对象关系映射): ...
- Django和SQLAlchemy,哪个Python ORM更好?
Django和SQLAlchemy,哪个Python ORM更好? ORM是什么? 在介绍Python下的两个ORM框架(Django和SQLAlchemy)的区别之前,我们首先要充分了解ORM框架的 ...
- Flask ORM SQLAlchemy数据操作完整案例
ORM ORM 全拼Object-Relation Mapping. 中文意为 对象-关系映射. 主要实现模型对象到关系数据库数据的映射. 比如:把数据库表中每条记录映射为一个模型对象 优点 只需要面 ...
- python orm框架sqlalchemy_ORM框架之SQLALchemy
一.面向对象应用场景: 1.函数有共同参数,解决参数不断重用: 2.模板(约束同一类事物的,属性和行为) 3.函数编程和面向对象区别: 面向对象:数据和逻辑组合在一起: 函数编程:数据和逻辑不能组合在 ...
最新文章
- 我的人生项目 -- 启动
- Bullmind在线读书笔记软件
- java并发中CountDownLatch的使用
- pyspider 安装 和 快速开始
- json模拟数据怎么用_在使用axios获取自己模拟的json数据是踩到的坑
- 理解有参构造器和无参构造器的作用
- mysql group by_技术分享 | 回顾 MySQL 的 MTS
- 魅族17将配备GaN氮化镓充电器:快充安全又高效
- 数据恢复的学习旅程开始
- 二叉树中和为某一值的路径(一)(C++)
- C#热血传奇游戏服务端再次开源更新
- Linux下vsftp服务器原理、安装、配置实战
- 基于大数据的图书推荐系统
- ⭐️C#零基础到入门 ⭐️| 带你认识编程中的—23种设计模式 六大设计原则
- torch中dataloader加速
- 【托业】【新托业TOEIC新题型真题】学习笔记13-题库四-P7
- Android 支付宝开发错误总结
- 广义瑞利商_瑞利商定义和广义瑞利商
- 李嘉璇:技术人如何深入人工智能
- YOLOV1-目标检测综述
热门文章
- PaddlePaddle训练营——公开课——AI核心技术掌握——第1章迈入现代人工智能的大门——Modern AI骨架脉络
- TMS320F28335之GPIO原理
- 【Tools】Visual Studio 2019专业版下载和安装
- 【STM32】中断相关函数和类型
- 【Linux】一步一步学Linux——whoami命令(96)
- 【Linux】一步一步学Linux——userdel命令(84)
- python cms tornado_都2020年了,python的tornado框架还有用武之力么?
- 路径总和 II—leetcode113
- php tp 微信支付,PHP实现的微信APP支付功能示例【基于TP5框架】
- 将 app 打包成 deb 发布安装