我现在有一张很大的表,有多大呢,有你的快乐那么大,数据量贼大。现在呢我想使用sqlalchemy去删除数据。我们知道下面的方式会先将结果查出来,然后再删除
- 先查询出来然后删除
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column,String,Text
from sqlalchemy.orm import sessionmaker
base = declarative_base()
class NewTable(base):
__tablename__='ellistest'
column1 = Column(String(255),primary_key=True)
column2 = Column(String(255),primary_key=True)
column3 = Column(Text)
engine = create_engine("postgresql://postgresadmin:admin123@192.168.214.133:32222/postgresdb")
session = sessionmaker(engine)
Session = session()
Session.query(NewTable).filter(NewTable.column1=='1').delete()
Session.commit()
Session.close()
- 使用原生sql直接删除
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column,String,Text
from sqlalchemy.orm import sessionmaker
base = declarative_base()
class NewTable(base):
__tablename__='ellistest'
column1 = Column(String(255),primary_key=True)
column2 = Column(String(255),primary_key=True)
column3 = Column(Text)
engine = create_engine("postgresql://postgresadmin:admin123@192.168.214.133:32222/postgresdb")
session = sessionmaker(engine)
Session = session()
Session.execute("delete from ellistest where column1='2'")
Session.commit()
Session.close()
- 非原生sql直接删除
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column,String,Text
from sqlalchemy.orm import sessionmaker
from sqlalchemy import and_
base = declarative_base()
class NewTable(base):
__tablename__='ellistest'
column1 = Column(String(255),primary_key=True)
column2 = Column(String(255),primary_key=True)
column3 = Column(Text)
engine = create_engine("postgresql://postgresadmin:admin123@192.168.214.133:32222/postgresdb")
session = sessionmaker(engine)
Session = session()
stmt = NewTable.__table__.delete().where(and_(NewTable.column1=='3',NewTable.column2='3'))
Session.execute(stmt)
Session.commit()
Session.close()