Python--day48--ORM框架SQLAlchemy
2024-10-08 01:47:47
SQLAlchemy:
SQLAlchemy是Python编程语言下的一款ORM框架,该框架建立在数据库API之上,使用关系对象映射进行数据库操作,简言之便是:将对象转换成SQL,然后使用数据API执行SQL并获取执行结果。
结构:
SQLAlchemy本身无法操作数据库,其必须以pymysql等第三方插件,Dialect用于和数据API进行交流,根据配置文件的不同调用不同的数据库API,从而实现对数据库的操作,如:
ORM功能使用:
1,创建表:
#!/usr/bin/env python
# -*- coding:utf-8 -*-
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 create_engine
#jdbc:mysql://localhost:3306
engine = create_engine("mysql+pymysql://root:123456@127.0.0.1:3306/s4day62db?charset=utf8", max_overflow=5) Base = declarative_base() # 创建单表
class Users(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String(32))
extra = Column(String(16)) def init_db():
Base.metadata.create_all(engine) def drop_db():
Base.metadata.drop_all(engine) init_db() #删除表
# drop_db()
运行结果:在mysql数据库创建了表单(注:运行代码之前要先在mysql数据库中建立数据库s4day62db)
2,创建两个表,这两个表之间有约束关系:
#!/usr/bin/env python
# -*- coding:utf-8 -*-
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 create_engine # jdbc:mysql://localhost:3306
engine = create_engine("mysql+pymysql://root:123456@127.0.0.1:3306/s4day62db?charset=utf8", max_overflow=5) Base = declarative_base() #创建单表
class UserType(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True, autoincrement=True)
title = Column(String(32), nullable=True, default='sf', index=True) # 创建单表
class Users(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True, autoincrement=True)
name = Column(String(32), nullable=True, default='sf', index=True)
email = Column(String(16), unique=True)
28 #添加约束
29 user_type_id = Column(Integer,ForeignKey("usertype.id")) # __table_args__ = (
# UniqueConstraint('id', 'name', name='uix_id_name'),
# Index('ix_n_ex', 'name', 'extra'),
# ) def init_db():
Base.metadata.create_all(engine) def drop_db():
Base.metadata.drop_all(engine) init_db() # 删除表
# drop_db()
最新文章
- 【十大经典数据挖掘算法】kNN
- K型热电耦高精度分段线性拟合(C语言)
- xml配置文件的读写
- 利用深搜和宽搜两种算法解决TreeView控件加载文件的问题。
- 一个类似backbone路由的纯净route ( 前端路由 客户端路由 backbone路由 )
- oracle 中文乱码---查看和修改客户端字符集
- C#中的Collection 2
- hadoop2.6.0+eclipse配置
- ECSHOP模糊分词搜索和商品列表关键字飘红功能
- Eclipse必须掌握的快捷键
- web网页的表单排版利器--960css
- Elasticsearch从0.90(0.90.x)到1.2(1.x)API的变化-二
- 用彩虹表破解MD5、LM Hash等复杂加密密码
- Javascript高级程序设计读书笔记(第六章)
- Bootstrap-table使用记录(转)
- MongoDB副本集模式安装
- EBS总账(GL)模块常用表
- C# -- 使用Ping检查网络是否正常
- MySQL GTID 错误处理汇总
- Camera插件推荐,解锁电影大师级视角控制
热门文章
- string型的“600.000”如何转换为int型
- ajax下载小于500M大文件【原】
- Docker.[1].环境准备.
- to_char 中fm
- 如何把一个普通的Eclipse项目改造成Eclipse Plugin项目
- 大数据心法来了!一站式玩转MaxCompute,还有开发者资源等你领!
- KDD2016,Accepted Papers
- height自适应
- vue 保存数组和对象, 避免双向绑定影响
- 如何在Liferay 7中创建一个简单的JSF Portlet