初始SQLAlchemy - 基本配置 一对一 \ 一对多(外键)\多对多

1. 使用豆瓣源安装包所需模块

pip install SQLAlchemy -i https://pypi.doubanio.com/simple
pip install pymysql -i https://pypi.doubanio.com/simple
https://www.cnblogs.com/DragonFire/p/10166527.html

2.在项目中创建文件create_table.py导入并实例化一个 基类


# 1.导入SQLAlchemy的基本类
from sqlalchemy.ext.declarative import declarative_base

# 2.创建ORM模型基类
Base = declarative_base()  # Django  的 Model

# 3.导入ORM对应的数据库类型的字段
from sqlalchemy import Column,Integer,String  # 列 int varchar

3 创建表

  • 单表
class User(Base):

    __tablename__ = "user"
    id = Column(Integer,primary_key=True,autoincrement=True)  # int 主键 自增
    name = Column(String(32),index=True)  # varchar(32) 创建索引
  • 外键 Foreignkey关系
from sqlalchemy.orm import relationship  # 表关系

class Student(Base):
    __tablename__ = 'student'
    id = Column(Integer, primary_key=True)
    name = Column(String(32))
    School_id = Column(Integer,ForeignKey("school.id"))  # 数据表的id

    # Student.stu2sch 转到 School表中
    stu2sch = relationship("School",backref="sch2stu")  # 创建外键关系  反向关系  学生对学校   反向学校对学生

class School(Base):
    __tablename__ = "school"
    id = Column(Integer, primary_key=True)
    name = Column(String(32))

  • 多对多 ManyToMany关系
class Girls(Base):
    __tablename__ = "girl"
    id = Column(Integer,primary_key=True)
    name = Column(String(32))

    # 创建关系
    girl2boy = relationship("Boys",secondary='hotel',backref="boy2girl")  # 对象名 关联hotel表  不是表明

class Boys(Base):
    __tablename__ = "boy"
    id = Column(Integer, primary_key=True)
    name = Column(String(32))


class Hotel(Base):
    __tablename__ = "hotel"
    id = Column(Integer, primary_key=True)
    girl_id = Column(Integer, ForeignKey("girl.id"))
    boy_id = Column(Integer, ForeignKey("boy.id"))

4.创建数据库链接

from sqlalchemy import create_engine
"""
# mysql数据库 + pymysql驱动 :// 用户名:密码@主机IP:端口/数据库名?字符集
"""
engine = create_engine("mysql+pymysql://root:root@127.0.0.1:3306/sqlalchemy?charset=utf8")

# 6.去数据库中创建与User所对应的数据表
Base.metadata.create_all(engine)  # 创建所有继承Base类对象表
  • 注意可能报错 无需理会
Warning: (1366, "Incorrect string value: '\\xD6\\xD0\\xB9\\xFA\\xB1\\xEA...' for column 'VARIABLE_VALUE' at row 485")
  result = self._query(query)
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 转载,觉得这篇写 SQLAlchemy Core,写得非常不错。不过后续他没写SQLAlchemy ORM... ...
    非梦nj阅读 10,834评论 1 14
  • # Python 资源大全中文版 我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列...
    小迈克阅读 8,175评论 1 3
  • # Awesome Python [![Awesome](https://cdn.rawgit.com/sindr...
    emily_007阅读 6,632评论 0 3
  • # Python 学习的过程 ## 现在的环境 - Pycharm --用来写网站,调试程序 - Jupyter ...
    m6ttl阅读 4,117评论 1 0
  • 学习环境 Ubuntu 虚拟机(双系统安装)系统就是软件光盘安装(淘汰)U盘安装(推荐)硬盘安装 python开发...
    riverstation阅读 3,165评论 0 0

友情链接更多精彩内容