Flask框架之ORM层面删除数据

ORM层面删除数据

  • ORM层面删除数据,会无视mysql级别的外键约束。
  • 直接会将对应的数据删除,然后将从表中的那个外键设置为NULL
  • 如果想要避免这种行为,应该将从表中的外键的nullable=False

from sqlalchemy import create_engine,Column,Integer,Float,Boolean,DECIMAL,Enum,\
	 Date,DateTime,Time,String,Text,func,or_,and_,ForeignKey,Table 
from sqlalchemy.dialects.mysql import LONGTEXT 
from sqlalchemy.ext.declarative import declarative_base 
from sqlalchemy.orm import sessionmaker,relationship,backref 
import random 
HOSTNAME = '127.0.0.1' 
PORT = '3306' 
DATABASE = 'first_sqlalchemy' 
USERNAME = 'root' 
PASSWORD = 'root' 
DB_URI ="mysql+pymysql://{username}:{password}@{host}:{port}/{db}?charset=utf8"\
	.format(username=USERNAME,password=PASSWORD,host=HOSTNAME,port=PORT,db=DATABASE)

engine = create_engine(DB_URI) 

Base = declarative_base(engine) 

session = sessionmaker(engine)() 

class User(Base): 
	__tablename__ = 'user' 
	id = Column(Integer,primary_key=True,autoincrement=True) 
	uname = Column(String(50),nullable=False) 

class News(Base): 
	__tablename__ = 'news' 
	id = Column(Integer, primary_key=True, autoincrement=True) 
	title = Column(String(50),nullable=False) 
	uid = Column(Integer,ForeignKey("user.id"),nullable=False) 
	author = relationship("User",backref='newss') 

Base.metadata.drop_all() 
Base.metadata.create_all() 

user = User(uname='wukong') 
news= News(title='hello world') 
news.author = user 

session.add(news) 
session.commit() 

发布了364 篇原创文章 · 获赞 4 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_44733660/article/details/104083292