Python SQLAlchemy demo


"""
Create 操作
"""

from faker import Factory
from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker

faker = Factory.create()

engine = create_engine('mysql+pymysql://root:root@localhost:3306/exam')
Session = sessionmaker(bind=engine)
session = Session()

Base = declarative_base()


class User(Base):
    __tablename__ = "User"
    id = Column(Integer, primary_key=True,autoincrement=True)
    cname = Column(String(64))
    caddress = Column(String(512))

    def __init__(self,name,address):
        self.cname = name
        self.caddress = address

    def __str__(self):
        return "cname:"+self.cname +" caddress:"+self.caddress

    def __repr__(self):
        return "cname:"+self.cname +" caddress:"+self.caddress


class Dog(Base):
    __tablename__ = "Dog"

    id = Column(Integer,primary_key=True,autoincrement=True)
    dname = Column(String(64))
    ddesc = Column(String(1024))

    def __init__(self,name,desc):
        self.dname = name
        self.ddesc = desc

    def __str__(self):
        return "dname:"+self.dname + " ddesc:"+self.ddesc


# 生成多条Users数据
Users = [User(name= faker.name(),address = faker.address()) for i in range(10)]

# 生成一条Dog数据
dog = Dog(name=faker.name(),desc=faker.email())

# 把描述的表创建出来
Base.metadata.create_all(engine)

# 把多个表数据添加到会话
session.add_all(Users)

# 把一个表数据添加到会话
session.add(dog)

# 提交会话
session.commit()




"""
Retrieve查询操作
"""

from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker

engine = create_engine('mysql+pymysql://root:root@localhost:3306/exam')

# 实例它一个sessionmaker类
Session = sessionmaker(bind=engine)

# 数据库会话
session = Session()

# 基类
Base = declarative_base()

# ORM描述User表
class User(Base):
    __tablename__ = "User"
    id = Column(Integer, primary_key=True,autoincrement=True)
    cname = Column(String(64))
    caddress = Column(String(512))

    def __init__(self,name,address):
        self.cname = name
        self.caddress = address

    def __str__(self):
        return "cname:"+self.cname +"\ncaddress:"+self.caddress

    def __repr__(self):
        return "cname:"+self.cname +"\ncaddress:"+self.caddress


# 查询会返回所有的结果
users = session.query(User).all()

# 遍历输出看所有结果
for user in users:
    print(user.__str__() +"\n--------------------------\n")

# 条件查询(我数据库里只有一个ElizabethBass),这里也是为了方便展示.first()获取第一个对象的作用
elizabeth = session.query(User).filter_by(cname='Elizabeth Bass').first()
print(elizabeth)
print("\n------------------------\n")
# 条件查询的另一种形式
elizabeth = session.query(User).filter(User.cname == 'Elizabeth Bass').first()
print(elizabeth)



"""
Update更新操作
"""

from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker

engine = create_engine('mysql+pymysql://root:root@localhost:3306/exam')

# 实例它一个sessionmaker类
Session = sessionmaker(bind=engine)

# 数据库会话
session = Session()

# 基类
Base = declarative_base()


# ORM描述Dog表
class Dog(Base):
    __tablename__ = "Dog"

    id = Column(Integer,primary_key=True,autoincrement=True)
    dname = Column(String(64))
    ddesc = Column(String(1024))

    def __init__(self,name,desc):
        self.dname = name
        self.ddesc = desc

    def __str__(self):
        return "dname:"+self.dname + " ddesc:"+self.ddesc

# 还记得吗,我们的数据库里只有一条Dog的数据
# 现在就把它拿出来,改一下名字,再放回去
dog = session.query(Dog).first()
print(dog)
print("\n---------------------\n")
# 给小狗改名
dog.dname = "little white"

# 提交更改
session.commit()

# 改完再看看
dog = session.query(Dog).first()
print(dog)



"""
删除Delete操作
"""

from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker

engine = create_engine('mysql+pymysql://root:root@localhost:3306/exam')

# 实例它一个sessionmaker类
Session = sessionmaker(bind=engine)

# 数据库会话
session = Session()

# 基类
Base = declarative_base()


# ORM描述Dog表
class Dog(Base):
    __tablename__ = "Dog"

    id = Column(Integer,primary_key=True,autoincrement=True)
    dname = Column(String(64))
    ddesc = Column(String(1024))

    def __init__(self,name,desc):
        self.dname = name
        self.ddesc = desc

    def __str__(self):
        return "dname:"+self.dname + " ddesc:"+self.ddesc

# 把唯一的一条狗数据删掉
dog = session.query(Dog).first()
session.delete(dog)
session.commit()

# 删了之后一条数据都没了 = =
dogs = session.query(Dog).all()
for dog in dogs:
    print(dog)
    print("\n------------------\n")


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值