python-sqlalchemy

python-sqlalchemy

from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker

from sqlalchemy import Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base

# 建立连接, 不存在则创建
engine = create_engine('sqlite:///../static/db/test.db?check_same_thread=False', echo=True)

# 定义映射
Base = declarative_base()

# 定义映射类,其继承上一步创建的Base
class Projects(declarative_base()):
    # 指定表明
    __tablename__ = "projects"  #

    projectname = Column(String(20))
    projectid = Column(Integer, primary_key=True)
    branch = Column(String(20), primary_key=True)
    owner = Column(String(10))

    # object 基类也存在该方法,这里重写该方法
    # _repr_方法默认返回该对象实现类的“类名+object at +内存地址”值
    def __repr__(self):
        return f"<projects(projectname={self.projectname}, projectid={self.projectid}, branch={self.branch}, owner={self.owner})>"

# 定义映射类,其继承上一步创建的Base
def dynamic_projects(**kwargs):
    tableName = kwargs["tableName"]
    class Projects(declarative_base()):
        # 指定表明
        __tablename__ = tableName  #

        projectname = Column(String(20))
        projectid = Column(Integer, primary_key=True)
        branch = Column(String(20), primary_key=True)
        owner = Column(String(10))

        # object 基类也存在该方法,这里重写该方法
        # _repr_方法默认返回该对象实现类的“类名+object at +内存地址”值
        def __repr__(self):
            return f"<projects(projectname={self.projectname}, projectid={self.projectid}, branch={self.branch}, owner={self.owner})>"
    return Projects

# 创建表
Projects.metadata.create_all(engine) # 没有则创建,有则不新建

# #### 建立会话,增删改查都需要建立会话
# # engine是2.2中创建的连接
Session = sessionmaker(bind=engine)
# 创建Session类实例
session = Session()
# 添加一行数据
insertOne = Projects(projectname='test', projectid=1, branch='master', owner='lili')
session.add(insertOne)
# 批量添加
data =  [Projects(projectname='test', projectid=1, branch='develop', owner='lili'),
        Projects(projectname='test', projectid=1, branch='test', owner='lili')]

session.add_all(data)
# # # # 当前更改只是在session中,需要使用commit确认更改才会写入数据库
session.commit()

# # # # 查询 Projects 表,projectname 是 test 的第一条记录
one_project = session.query(Projects).filter_by(projectname='test').first()
# one_project -> [Projects-class]
# 返回所有数据
allData = session.query(Projects).filter_by().all()
## 执行 sql 
renameSql = f"alter table 'Projects' rename to 'Project'"
session.execute(renameSql)

# 删除表
Projects.metadata.create_all(engine) # 不见检查 表是否存在
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值