使用sqlalchemy的增删改查

本文介绍使用Python的SQLAlchemy ORM进行数据库表的创建及增删改查操作的具体实现方法。包括如何定义模型类、通过ORM执行SQL操作等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用sqlalchemy建表和增删改查

sqlalchemy建表

from connect import Base,session
from sqlalchemy import Column,Integer,String,DateTime,Boolean
from datetime import datetime


class User(Base):
    __tablename__='user'  #__tablename__定义表名字
    id = Column(Integer,primary_key=True,autoincrement=True)
    username = Column(String(20),nullable=False)
    password = Column(String(50))
    createtime = Column(DateTime,default=datetime.now())
    _locked = Column(Boolean,default=False,nullable=False)

    @classmethod   #查询所有的静态类方法
    def all(cls):
        return session.query(cls).all()

    @classmethod   #filter_by所有的静态类方法id
    def by_id(cls,id):
        return session.query(cls).filter_by(id=id).all()

    @classmethod    #缩写查询的username的方式
    def by_name(cls,name):
        return session.query(cls).filter_by(username=name).all()

    @property
    def locked(self):
        return self._locked

    def __repr__(self):
        return "<User(id='%s' ,username='%s',password='%s',createtime='%s',_locked ='%s',)>" % (
            self.id ,
            self.username,
            self.password,
            self.createtime,
            self._locked
        )
    #定义原生类型,不定义会返回一个对象

if __name__=='__main__':
    Base.metadata.create_all()
sqlalchemy的增删改查
    @classmethod   #查询所有的静态类方法
    def all(cls):
        return session.query(cls).all()

    @classmethod   #filter_by所有的静态类方法id
    def by_id(cls,id):
        return session.query(cls).filter_by(id=id).all()

    @classmethod    #缩写查询的username的方式
    def by_name(cls,name):
        return session.query(cls).filter_by(username=name).all()

    @property
    def locked(self):
        return self._locked

需要session 会话调用

from user_modules import User,session

def add_user():
    # person =User(username='dandan',password='abc123')
    # session.add(person)

    session.add_all(
            [
            User(username='tobee',password='234qwe'),
            User(username='NO1',password='ZZZ123')
            ]
    ) #添加多个元素

    session.commit()

def search_user():
    row = session.query(User).all()
    # print(row)
    row = session.query(User).filter_by(id=1).all()   #filter_by与filter的区别
    # print(row)
    row = session.query(User).filter(User.username=='NO1')
    print(row[0].locked)

def update_user():
    row = session.query(User).filter_by(username='dandan').update({User.password:'123asd'})
    session.commit()

def delete_user():
    row = session.query(User).filter_by(username='NO1')[0]
    print(row)
    session.delete(row)
    session.commit()


if __name__=="__main__":
    # add_user()
    # search_user()
    # update_user()
    delete_user()
    # print(User.all())
    # print(User.by_id(1))
    print(User.by_name('NO1'))

    # print(dir(row[0]))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值