分类 分享 下的文章

ORM 是 Object-Relational Mapping(对象关系映射) 的缩写,它是一种编程技术,用于在面向对象编程语言中将数据库表与程序中的对象自动映射,从而避免直接编写繁琐的 SQL 语句。

核心概念

  1. 对象与表的映射

    • 数据库中的一张表 ↔ 程序中的一个类(如 User 类对应 users 表)。
    • 表中的一行数据 ↔ 类的一个实例对象(如 User(name="Alice") 对应表中一行记录)。
    • 表的字段 ↔ 类的属性(如 user.name 对应 users.name 列)。
  2. 操作抽象化

    • 通过操作对象(如 user.save())自动生成并执行底层 SQL(如 INSERT INTO users...),开发者无需手动拼接 SQL。

常见 ORM 框架示例

语言ORM 框架
PythonDjango ORM, SQLAlchemy
JavaHibernate, MyBatis
JavaScriptSequelize, TypeORM
PHPEloquent (Laravel)

优缺点

优点

  • 提高开发效率:减少重复的 SQL 编写。
  • 跨数据库兼容:切换数据库时只需修改配置(如从 MySQL 到 PostgreSQL)。
  • 安全性:内置防 SQL 注入机制(如参数化查询)。

缺点

  • 性能损耗:复杂查询可能不如手写 SQL 高效。
  • 学习成本:需掌握 ORM 的特定语法和约定。

简单示例(Python + SQLAlchemy)

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

# 1. 定义表结构(通过类)
Base = declarative_base()
class User(Base):
    __tablename__ = 'users'
    id = Column(Integer, primary_key=True)
    name = Column(String)

# 2. 创建数据库连接
engine = create_engine('sqlite:///mydb.db')
Base.metadata.create_all(engine)

# 3. 操作数据库(无需写 SQL)
from sqlalchemy.orm import sessionmaker
Session = sessionmaker(bind=engine)
session = Session()

# 插入数据(Create)
new_user = User(name="Alice")
session.add(new_user)
session.commit()

# 查询数据(Read)
users = session.query(User).filter_by(name="Alice").all()

何时使用 ORM?

  • 适合大多数业务逻辑简单的 CRUD 操作。
  • 复杂查询或高性能场景可结合原生 SQL 使用(如 ORM 提供 raw SQL 支持)。

错误原因

PowerShell 的执行策略 (Execution Policies) 是保护机制,用于防止运行未经认证的脚本。

解决步骤

以下是解决该问题的几种方法:


方法一:临时修改执行策略(推荐)

  1. 在 PowerShell 中运行以下命令以临时允许脚本运行:

    Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
    
  2. 再次尝试运行你的命令:
    此方法仅对当前 PowerShell 会话有效,关闭终端后执行策略会恢复为默认值。

方法二:永久修改执行策略

这是一个更改系统设置的持久解决方案,仅在你明确需要时使用。

  1. 使用管理员权限运行 PowerShell。
  2. 执行以下命令以修改系统级别的执行策略:

    Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope LocalMachine
    • RemoteSigned 表示允许本地脚本执行,远程下载的脚本需要被签名。
  3. 再次尝试运行你的命令。

注意:永久修改执行策略可能存在一定安全风险,请根据实际需要执行。

Cobra 是go语言中用于创建 CLI 应用程序的库。
本身提供了一个快速创建 cli 应用的脚手架 cobra-cli

安装:

cobra:

go get -u github.com/spf13/cobra@latest

cobra-cli:

go install github.com/spf13/cobra-cli@latest

快速创建应用:

现在假设要创建一个名为test的cli程序,你可以使用一下步骤来创建

1. 初始化新的go模块:

go mod init test

2. 使用cobra-cli来快速创建应用模板

cobra-cli init

2.1 cobra-cli init 提供三个可选标志

--author

cobra-cli init --author "Steve Francia [email protected]"

--license

cobra-cli init --license apache

--viper

cobra-cli init --viper

使用 --viper 标志自动设置 viper
Viper 是 Cobra 的伴侣,旨在轻松处理环境变量和配置文件,并将它们无缝连接到应用程序标志。

3. 向项目添加命令

这个部分使用cobra-cli的add命令,例如:

cobra-cli add serve
cobra-cli add config
cobra-cli add create -p 'configCmd'
您会注意到,此最终命令具有 -p 标志。这用于将父命令分配给新添加的命令。在这种情况下,我们想将 “create” 命令分配给 “config” 命令。如果未指定,则所有命令的默认父级为 rootCmd。
默认情况下,cobra-cli 会将 Cmd 附加到提供的名称,并将此名称用作内部变量名称。指定父级时,请确保与代码中使用的变量名称匹配。
注意:命令名称使用 camelCase(而不是 snake_case/kebab-case)。否则,您将遇到错误。例如,cobra-cli add add-user 不正确,但 cobra-cli add addUser 有效。

最终在运行完这三个命令之后会在 cmd 文件夹中看到对应命令的go文件。这时可以参考官方文档来进行编写对应的代码。

参考:

  1. cobra github
  2.  Cobra 生成器README
  3. Cobra 用户指南

1. 安装gcc

  1. 搜索 gcc 包
    运行以下命令查看可用的 gcc 包:

    choco search gcc
  2. 安装 MinGW(推荐,包含 gcc)
    使用以下命令安装 MinGW:

    choco install mingw -y
  3. 验证安装

    • 打开新终端(如 PowerShell 或 CMD)。
    • 输入以下命令验证 gcc 是否可用:

      gcc --version

2. 配置环境变量

  1. 找到 MinGW 的安装路径
    默认路径通常是 C:\tools\mingw64
  2. 添加路径到系统环境变量

    • 搜索 环境变量,打开 编辑系统环境变量
    • 系统属性 > 高级 > 环境变量 中,找到 Path
    • 点击 编辑,添加 MinGW 的 bin 文件夹路径 C:\ProgramData\mingw64\mingw64\bin
  3. 保存并重启终端

3. 测试 gcc

编写一个简单的 C 文件(如 test.c):

#include <stdio.h>

int main() {
    printf("Hello, GCC!\n");
    return 0;
}

在终端运行以下命令进行编译:

gcc test.c -o test.exe

执行生成的 test.exe 文件:

test.exe

如果输出 Hello, GCC!,说明安装成功。