博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
sqlalchemy
阅读量:6860 次
发布时间:2019-06-26

本文共 2167 字,大约阅读时间需要 7 分钟。

1、ORM框架类型:DB first 和 Code first

DB frist : 先手动创建数据库----->> 使用ORM框架------>> 自动生成类

code frist : 不能创建数据库,只能先手动创建数据库和类----->> 使用ORM框架------>> 生成表

2、SQLALchemy属于code frist,因此我们先手动创建数据库和类,然后ORM框架会自动帮我创建数据表,当数据表已经存在的情况下,不会重复创建

3、ORM框架(对象、关系、映射):SQLALchemy

概念:SQLALchemy框架封装了底层复杂的SQL语句,提供简单的调用接口,让Python程序调用,再把Python程序写的类,转换成SQL语句发给MySQL执行;

对应关系如下:

类(class)---对应数据库里的表(table)

类的属性---对应数据库里的列(Column)
对象(类的实例)----对应数据库里的行

4、SQLALchemy只做类和SQL语句的转换,连接数据库是pymysql;

可以在(engine=create_engine("mysql+pymysql)指定

from sqlalchemy import create_engineengine = create_engine("mysql+pymysql://root:root@localhost:3306/webpy?charset=utf8",encoding="utf-8", echo=True)create_engine 方法进行数据库连接,返回一个 db 对象。里面的参数表示:数据库类型+数据库驱动名称://用户名:密码(没有密码则为空,不填)@数据库主机地址/数据库名?编码echo = True 是为了方便 控制台 logging 输出一些sql信息,默认是False

 

from sqlalchemy.ext.declarative import declarative_basefrom sqlalchemy import Column, Integer, String, ForeignKey, UniqueConstraint, Index,CHAR,VARCHARfrom sqlalchemy.orm import sessionmaker, relationshipfrom sqlalchemy import create_engineBase = declarative_base()class UserType(Base):    __tablename__ = 'usertype'    id = Column(Integer, primary_key=True, autoincrement=True)    title = Column(VARCHAR(32), nullable=True, index=True)class Users(Base):    __tablename__="User" #设置表的名字    id=Column(Integer,nullable=True,autoincrement=True,primary_key=True)    name=Column(String(32))    email=Column(String(49))    user_type_id = Column(Integer,ForeignKey("usertype.id"))      #  设置外键# __table_args__ ,SQLAlcheme的规则种设置索引__table_args__ = (        UniqueConstraint('id', 'name', name='uix_id_name'),        Index('ix_n_ex','name', 'email',),    )#连接指定数据库engine=create_engine("mysql+pymysql://eric:123123@192.168.182.128:3306/db666?charset=utf8", max_overflow=5)# #找到程序中所有 类(表格),开始创建表,忽略数据库中已经存在的表;# Base.metadata.create_all(engine)## #删除表 # Base.metadata.drop_all(engine)

5、架构图

 

 

参考:

1、http://www.cnblogs.com/sss4/p/7003203.html

2、https://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/0014021031294178f993c85204e4d1b81ab032070641ce5000

3、http://blog.csdn.net/fgf00/article/details/52949973

4、http://blog.csdn.net/zhyh1435589631/article/details/51549944

你可能感兴趣的文章
新功能!从 Dropbox 部署到 Windows Azure 网站
查看>>
指尖上的电商---(10)SolrAdmin中加入多核
查看>>
CCEditBox/CCEditBoxImplAndroid
查看>>
TCP/IP协议栈--IP首部选项字段的分析
查看>>
Kubuntu 初始配置
查看>>
python中列表和元组的操作(结尾格式化输出小福利)
查看>>
用过的一些服务器集成软件
查看>>
一键拨打
查看>>
20120522:ERROR - ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务
查看>>
Maven构建war项目添加版本号
查看>>
更新 手淘 flexible 布局 rem 单位适配问题
查看>>
第三次作业
查看>>
新浪微博登录接口实例
查看>>
wcf技术剖析_会话
查看>>
AngularJS 指令的 Scope (作用域)
查看>>
gitlab的使用
查看>>
iOS 生成本地验证码
查看>>
找不到 javax.servlet.http.HttpServletResponse 和 javax.servlet.http.HttpServletRequest 问题解决...
查看>>
Flip Game(枚举)
查看>>
WebWorker与WebSocket实现前端消息总线
查看>>