3.3.5-ORM框架【多选一:Flask系列】

3.3.5-ORM框架【多选一:Flask系列】

第1关:使用Flask进行数据库开发

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
import datetime
import warnings
warnings.filterwarnings("ignore")

app = Flask(__name__)
# 请在此处添加代码,设置数据库连接
# 用户:root
# 密码:123123
# 连接地址:127.0.0.1
# 数据库:flask_table
#********** Begin *********#
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:123123@127.0.0.1:3306/flask_table'
db = SQLAlchemy(app)
#********** End **********#

# 定义模型
class entry_Form(db.Model):
    __tablename__ = 'entry_form'
    ID = db.Column(db.Integer, primary_key=True, autoincrement=True)
    company_name = db.Column(db.String(255), nullable=False)
    eduLevel_name = db.Column(db.String(255))
    Entry_time = db.Column(db.Date, default=datetime.date(2019, 1, 1))
    jobName = db.Column(db.String(255))
    salary = db.Column(db.Integer)

    # 根据题目要求,请在此处此函数中添加代码,完成函数的编写
    def createTable(self):
        # ********** Begin *********#
        # 删除原有数据库表
        db.drop_all()
        # 根据模型类型创建表
        db.create_all()
        # ********** End **********#

# 创建表
if __name__ == '__main__':
    with app.app_context():
        entry_form_instance = entry_Form()
        entry_form_instance.createTable()
        print("您创建的表格式正确!")

第2关:查询操作

from task import entry_Form
import datetime

class Test():
    def select_Table(self):
        # 请在此处填写代码,并根据左侧编程要求完成本关考核
        # ********** Begin *********#
        results = entry_Form.query.filter(
            entry_Form.company_name == '阿里',
            entry_Form.eduLevel_name == '硕士',
            entry_Form.Entry_time.between(datetime.date(2019, 6, 1), datetime.date(2019, 6, 30)),
            entry_Form.salary.between(20000, 25000)
        ).all()

        output = []
        for result in results:
            output.append([
                result.ID, 
                result.company_name, 
                result.eduLevel_name, 
                result.Entry_time.strftime('%Y-%m-%d'),  # 将日期转换为字符串格式
                result.jobName, 
                result.salary
            ])
        return output
        # ********** End **********#

# 创建Test实例并调用select_Table方法
if __name__ == '__main__':
    test_instance = Test()
    data = test_instance.select_Table()
    for i in data:
        print(i)

第3关:添加操作

import pandas as pd
from task import db, entry_Form
import datetime

class Message:

    def update_table(self):
        # 请根据左侧编程要求完成相应的代码填写
        # 文件路径为"data.csv"  模型类 (已实现):entry_Form
        # 数据库表已创建 只需要完成添加操作即可
        # ********** Begin *********#

        # 读取CSV文件,使用制表符作为分隔符
        df = pd.read_csv('data.csv', delimiter='\t')



        # 创建要添加到数据库的对象列表
        entries = []
        for index, row in df.iterrows():
            entry = entry_Form(
                ID=row['ID'],
                company_name=row['company_name'],
                eduLevel_name=row['eduLevel_name'],
                Entry_time=datetime.datetime.strptime(row['Entry_time'], '%Y-%m-%d').date(),
                jobName=row['jobName'],
                salary=row['salary']
            )
            entries.append(entry)
        
        # 添加多条数据
        db.session.add_all(entries)
        
        # 提交会话
        db.session.commit()
        # ********** End **********#

第4关:删除操作

from task import db, entry_Form

class Demo:
    def del_col(self):
        # 请在此处填写代码,根据左侧编程要求完成数据的批量删除
        # ********** Begin *********#
        # 批量删除除了"Java工程师"和"Python工程师"以外,且不是"华为"公司的所有记录
        db.session.query(entry_Form).filter(
            ~((entry_Form.jobName.in_(['Java工程师', 'Python工程师'])) & (entry_Form.company_name != '华为'))
        ).delete(synchronize_session=False)
        
        # 提交事务
        db.session.commit()
        # ********** End **********#

第5关:修改操作

from task import db, entry_Form

class Demo:
    # 更新数据函数
    def update_Date(self):
        # 根据左侧相关知识,完成相关代码实现
        # ********* Begin *********#
        # 查询 ID 为 10 的记录
        user = entry_Form.query.filter_by(ID=10).first()
        # 修改薪资为 30000
        user.salary = 30000
        # 提交修改
        db.session.commit()
        # ********* End *********#

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值