编写一段使用Python向数据库MySQL中添加数据的代码。假设数据库中有一张表叫做`students`，它有`id`, `name`, `age`, `grade` 四个字段。我有一个学生信息（王小明, 17岁, 高一）需要添加到这个表中。怎么做？
user
要将学生信息添加到MySQL数据库的`students`表中，首先需要安装`mysql-connector-python`库，然后使用该库中的方法连接数据库并执行插入操作。以下是一个简单的示例代码：

```python
import mysql.connector

# 数据库连接信息
config = {
    'user': 'root',
    'password': 'your_password',
    'host': '127.0.0.1',
    'database': 'your_database'
}

# 连接到MySQL数据库
conn = mysql.connector.connect(**config)
cursor = conn.cursor()

# 学生信息
student_info = ('王小明', 17, '高一')

# 插入数据的SQL语句
insert_query = "INSERT INTO students (name, age, grade) VALUES (%s, %s, %s)"

# 执行插入操作
cursor.execute(insert_query, student_info)

# 提交事务
conn.commit()

# 关闭连接
cursor.close()
conn.close()
```

在这段代码中：
- 首先，使用`mysql.connector.connect`函数建立与数据库的连接，传入用户、密码、主机地址和数据库名称。
- 然后，使用`conn.cursor()`创建一个游标对象，用于执行SQL命令。
- 定义要插入的学生信息，并设置插入数据的SQL语句。
- 使用`cursor.execute()`执行SQL语句，参数是SQL语句和一个包含变量值的元组。
- 使用`conn.commit()`提交事务，确保更改被保存到数据库中。
- 最后，关闭游标和数据库连接。
assistant
如果我想添加多个学生信息到这个表中，该怎么办？
user
如果要向`students`表中添加多个学生信息，可以使用`cursor.executemany()`方法。这个方法允许多次执行一条SQL语句，传入一个包含多组数据的列表或元组。以下是一个示例代码：

```python
import mysql.connector

# 数据库连接信息
config = {
    'user': 'root',
    'password': 'your_password',
    'host': '127.0.0.1',
    'database': 'your_database'
}

# 连接到MySQL数据库
conn = mysql.connector.connect(**config)
cursor = conn.cursor()

# 多个学生信息
students_info = [
    ('王小明', 17, '高一'),
    ('李华', 16, '高一'),
    ('张三', 18, '高二'),
    ('小红', 15, '初三')
]

# 插入数据的SQL语句
insert_query = "INSERT INTO students (name, age, grade) VALUES (%s, %s, %s)"

# 执行插入操作
cursor.executemany(insert_query, students_info)

# 提交事务
conn.commit()

# 关闭连接
cursor.close()
conn.close()
```

在这段代码中：
- 定义了一个包含多个学生信息的列表`students_info`，每个学生的信息用一个元组表示。
- 使用`cursor.executemany()`方法执行SQL插入语句，参数是SQL语句和包含多组数据的列表。
- 其他步骤与之前相同，包括提交事务和关闭数据库连接。这样可以有效地将多个学生信息一次性插入到数据库中。
assistant
如果我要从这个表中查询所有`grade`为“高一”的学生列表，应该怎么写代码？
user
要从`students`表中查询所有`grade`为“高一”的学生列表，可以使用`cursor.execute()`方法执行一个SELECT查询，并使用`cursor.fetchall()`方法获取所有符合条件的记录。以下是一个示例代码：

```python
import mysql.connector

# 数据库连接信息
config = {
    'user': 'root',
    'password': 'your_password',
    'host': '127.0.0.1',
    'database': 'your_database'
}

# 连接到MySQL数据库
conn = mysql.connector.connect(**config)
cursor = conn.cursor()

# 查询所有grade为“高一”的学生
query = "SELECT * FROM students WHERE grade = %s"
grade = ('高一',)

# 执行查询
cursor.execute(query, grade)

# 获取所有结果
results = cursor.fetchall()

# 打印查询结果
for row in results:
    print(f"ID: {row[0]}, Name: {row[1]}, Age: {row[2]}, Grade: {row[3]}")

# 关闭连接
cursor.close()
conn.close()
```

在这段代码中：
- 定义了一个查询语句`query`，用于从`students`表中选择所有`grade`为“高一”的学生。
- 使用`cursor.execute()`方法执行查询，其中第二参数是一个包含查询参数的元组`grade`。
- 使用`cursor.fetchall()`方法获取所有符合条件的记录，并将其存储在`results`变量中。
- 遍历`results`列表，打印每条记录的详细信息。
- 最后，关闭游标和数据库连接。这样可以查询并显示所有`grade`为“高一”的学生信息。
assistant