#!/usr/bin/env python # -*- coding: utf-8 -*- from sqlalchemy import create_engine from sqlalchemy.ext.declarative import declarative_base from sqlalchemy import Column,Integer,String,DateTime,Boolean from sqlalchemy.orm import sessionmaker # Initialize database connection: engine = create_engine('mysql+pymysql://root:123123@localhost/school?charset=utf8',encoding='utf-8') # school is the database name, which already exists # Create base class for objects: Base = declarative_base() ''' mysql native statement CREATE TABLE `news`( `id` INT NOT NULL AUTO_INCREMENT, `title` VARCHAR(200) NOT NULL, `content` VARCHAR(2000) NOT NULL, `types` VARCHAR(10) NOT NULL, `image` VARCHAR(300) NULL, `author` VARCHAR(20) NULL, `view_count` INT DEFAULT 0, `create_at` DATETIME NULL, `is_valid` SMALLINT DEFAULT 1, PRIMARY KEY(`id`) )DEFAULT CHARSET 'UTF8'; ''' class News(Base): # table name: __tablename__ = 'news_alchemy' # Need to create a new table name # Structure of the table: id = Column(Integer,primary_key=True) title = Column(String(200),nullable=False) content = Column(String(2000),nullable=False) types = Column(String(10),nullable=False) image = Column(String(300),) author = Column(String(20),) view_count = Column(Integer,) create_at = Column(DateTime,) is_valid = Column(Boolean,) # create table #News.metadata.create_all(engine) # adding data Session_class = sessionmaker(bind=engine) # Create a session session class with the database, note that what is returned to the session here is a class, not an instance class OrmAdd(object): def __init__(self): self.session = Session_class() # Generate a session instance def add(self): """Insert data""" obj1 = News( title = 'D1', content = 'I am D1', types = 'chain home', is_valid = 0, ) obj2 = News( title = 'D2', content = 'I am D2', types = 'chain home', is_valid=0, ) obj3 = News( title = 'D2', content = 'I am D2', types = 'chain home', is_valid=1, ) self.session.add(obj1) self.session.add(obj2) self.session.add(obj3) self.session.commit() return obj1 def get_one(self): """Query a piece of data""" return self.session.query(News).get(13) def get_more(self): """Query multiple pieces of data""" return self.session.query(News).filter_by(is_valid=0) def update_one(self,nid): """Modify a piece of data""" ud_obj = self.session.query(News).get(nid) if ud_obj: ud_obj.author = 'Zhao Yun' self.session.add (ud_obj) self.session.commit() return True return False def update_more(self,qk): """Modify multiple pieces of data""" data_list = self.session.query(News).filter_by(is_valid=qk) for ud_obj in data_list: ud_obj.author = 'Little Joe' self.session.add (ud_obj) self.session.commit() def del_one(self): """Delete a piece of data""" del_obj = self.session.query(News).filter_by(id=15).first() if del_obj: self.session.delete(del_obj) self.session.commit() return True return False def main(): orm = OrmAdd () #obj = orm.add() # Query data #obj = orm.get_one() obj = orm.get_more() if obj: # process the query data # get a # print(obj.types) # get multiple for ele in obj: print(ele.types) else: print("The query object does not exist") # change data # orm.update_one(110) # orm.update_more(False) # delete data orm.del_one() if __name__ == '__main__': main()
Basic CRUD through sqlalchemy
Guess you like
Origin http://43.154.161.224:23101/article/api/json?id=325570512&siteId=291194637
Recommended
Ranking