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()

最新文章

  1. 【十大经典数据挖掘算法】kNN
  2. K型热电耦高精度分段线性拟合(C语言)
  3. xml配置文件的读写
  4. 利用深搜和宽搜两种算法解决TreeView控件加载文件的问题。
  5. 一个类似backbone路由的纯净route ( 前端路由 客户端路由 backbone路由 )
  6. oracle 中文乱码---查看和修改客户端字符集
  7. C#中的Collection 2
  8. hadoop2.6.0+eclipse配置
  9. ECSHOP模糊分词搜索和商品列表关键字飘红功能
  10. Eclipse必须掌握的快捷键
  11. web网页的表单排版利器--960css
  12. Elasticsearch从0.90(0.90.x)到1.2(1.x)API的变化-二
  13. 用彩虹表破解MD5、LM Hash等复杂加密密码
  14. Javascript高级程序设计读书笔记(第六章)
  15. Bootstrap-table使用记录(转)
  16. MongoDB副本集模式安装
  17. EBS总账(GL)模块常用表
  18. C# -- 使用Ping检查网络是否正常
  19. MySQL GTID 错误处理汇总
  20. Camera插件推荐,解锁电影大师级视角控制

热门文章

  1. string型的“600.000”如何转换为int型
  2. ajax下载小于500M大文件【原】
  3. Docker.[1].环境准备.
  4. to_char 中fm
  5. 如何把一个普通的Eclipse项目改造成Eclipse Plugin项目
  6. 大数据心法来了!一站式玩转MaxCompute,还有开发者资源等你领!
  7. KDD2016,Accepted Papers
  8. height自适应
  9. vue 保存数组和对象, 避免双向绑定影响
  10. 如何在Liferay 7中创建一个简单的JSF Portlet