1.如何建表(增删改查)
2.如何对已存在的表进行增删改查
方法一:采用映射数据库的方法操作已存在的表,需要使用automap_base函数。缺点:由于是映射一张表,表与表之间的关系不能反应,查询多对多关系表时意义不大。
from sqlalchemy import create_engine from sqlalchemy.ext.automap import automap_base from sqlalchemy.orm import sessionmaker uri = 'mysql://root:mysql@127.0.0.1:3306/flasknews' engine = create_engine(uri, echo=False) Base = automap_base() Base.prepare(engine, reflect=True) # 获取表对象 table_student = Base.classes.students#映射到students表 Session = sessionmaker(bind=engine) session = Session() #----------添加数据 def add(): session.add(table_student(name="hello791")) session.commit() def query(): data=session.query(table_student).filter(table_student.id>=2).all() for name in data: print(name.name) if __name__ == '__main__': # add() query()
2.建立表orm模型,数据库中如果有这个表,也不影响。
uri="mysql://root:mysql@127.0.0.1:3306/myflask?charset=utf8" engine=create_engine(uri,echo=False) base=declarative_base(engine) session=sessionmaker(bind=engine)() class AuthorsData(base): __tablename__="authors" id= Column(Integer, primary_key=True) name=Column(String(64), unique=True) books = relationship("BooksData",backref="authors")#以books,authors表示引用对方数据 class BooksData(base): __tablename__="books" id=Column(Integer,primary_key=True) name=Column(String(64), unique=True) author_id= Column(Integer,ForeignKey("authors.id"))
if __name__=="__main__":
session.query(BookData).all()