首页 > 数据库 >sqlalchemy--m2m

sqlalchemy--m2m

时间:2022-11-13 21:02:53浏览次数:48  
标签:__ engine sqlalchemy -- Column m2m Base Integer id

这一块先建个表, 后面再讨论

# -*- coding:utf-8 -*-
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import create_engine, Column, String, Integer, ForeignKey, UniqueConstraint
from sqlalchemy.orm import sessionmaker, relationship


engine = create_engine("sqlite:///test_s1.db")
# 创建数据库连接
session =sessionmaker(bind=engine)()

# 创建表
Base = declarative_base()

class Student(Base):
    __tablename__ = 'student'
    id = Column(Integer, primary_key=True)
    name = Column(String(32), index=True, nullable=False)

class Course(Base):
    __tablename__ = 'course'
    id = Column(Integer, primary_key=True)
    title = Column(String(32), index=True, nullable=False)

class Student2Course(Base):
    __tablename__ = 'student2course'
    id = Column(Integer, primary_key=True)
    student_id = Column(Integer, ForeignKey('student.id'))
    course_id = Column(Integer, ForeignKey('course.id'))
    __table_args__ = (
        UniqueConstraint('student_id', 'course_id', name='uix_st_cou'),
    )

def create_all():
    Base.metadata.create_all(engine)

def drop_all():
    Base.metadata.drop_all(engine)

if __name__ == '__main__':
    create_all()
    session.close()

 

标签:__,engine,sqlalchemy,--,Column,m2m,Base,Integer,id
From: https://www.cnblogs.com/kongzhagen/p/16886930.html

相关文章

  • 7 JVM类加载机制
    目录1类/接口加载机制1类加载的时机1.1类的生命周期1.2类初始化的时机3接口初始化的时机4类加载的过程4.1加载4.2验证4.3准备4.4解析4.4.1类或接口的解析4.4.2......
  • 【JS基础】闭包
    概念:闭包是指有权访问另一个函数作用域中的变量的函数。在JS中,只有函数内部的子函数才能读取局部变量,所以闭包可以简单理解成‘定义在一个函数内部的函数’。 ......
  • Shell外壳的简易模拟
    写在前面我们来谈目前进程控制的最后的一个内容,这个博客内容主要涉及到几个进程替换的相关函数,我们需要学习它们的用法.最后我们需要模拟实现一个简易的shell作为进程控制......
  • 函数的声明(学习笔记)
    intadd(inta,intb){intz=a+b;returnz;}intmain(){inta=12;intb=0;intz=add(a,b);printf("%d\n",z);return0;}自定义函数add,需要放在主函数的前面,......
  • SQL*PLUS命令的使用大全
     Oracle的sql*plus是与oracle进行交互的客户端工具。在sql*plus中,可以运行sql*plus命令与sql*plus语句。 我们通常所说的DML、DDL、DCL语句都是sql*plus语句,它们执行完......
  • 可视化大屏的几种屏幕适配方案,总有一种是你需要的
    假设我们正在开发一个可视化拖拽的搭建平台,可以拖拽生成工作台或可视化大屏,或者直接就是开发一个大屏,首先必须要考虑的一个问题就是页面如何适应屏幕,因为我们在搭建或开发时......
  • 选课系统编写思路
    选课系统编写思路搭建框架依旧是使用三层架构的框架来编写程序编写的时候同样使用软件开发目录规范不同的是尝试将面向对象的三大核心——封装、继承、多态尽量应用进......
  • c语言第二例题
    题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;20万到40万之间......
  • 非功能测试
    兼容性测试不同的操作系统、浏览器、分辨率下,软件的行为是否一致具体的兼容性测试由公司定义界面测试依据产品原型图或者UI设计图如果没有原型图,站在用户的角度来......
  • 极客编程python入门-调用函数
    调用函数Python内置了很多有用的函数,我们可以直接调用。要调用一个函数,需要知道函数的名称和参数a=abs(100.123)print(a)a=abs(-123)print(a)a=abs(-123.123)print(a......