import pymysql # 建立数据库连接 connection = pymysql.connect( host='localhost', # 数据库服务器地址 user='root', # 用户名 password='123456', # 密码 database='bdpd_rmv', # 数据库名 port=3306, # 端口(默认3306) charset='utf8mb4', # 字符编码 cursorclass=pymysql.cursors.DictCursor # 返回字典格式数据 )现在我想学习游标创建表
时间: 2025-07-21 16:53:04 浏览: 1
<think>我们使用游标创建表的基本步骤是:
1. 建立数据库连接(已经完成)
2. 创建游标对象
3. 编写创建表的SQL语句
4. 使用游标执行SQL语句
5. 提交事务(对于DDL语句,虽然有些数据库会自动提交,但显式提交是个好习惯)
6. 关闭游标和连接(但通常使用with语句自动管理游标)
注意:创建表属于DDL(数据定义语言)操作,一旦执行就会立即生效(在MySQL中,DDL是隐式提交的,但为了代码清晰,我们仍然建议在执行DDL后提交)。
下面是一个创建表的示例。假设我们要在数据库`bdpd_rmv`中创建一个名为`students`的表,包含id(主键)、姓名、年龄和注册日期等字段。</think>### 使用Python游标创建MySQL数据库表
以下是使用pymysql游标创建数据库表的完整代码示例:
```python
import pymysql
# 建立数据库连接
connection = pymysql.connect(
host='localhost',
user='root',
password='123456',
database='bdpd_rmv',
port=3306,
charset='utf8mb4',
cursorclass=pymysql.cursors.DictCursor
)
try:
# 创建游标对象(使用with语句确保自动关闭)
with connection.cursor() as cursor:
# 创建表的SQL语句
create_table_sql = """
CREATE TABLE IF NOT EXISTS students (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
age TINYINT UNSIGNED,
email VARCHAR(255) UNIQUE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
"""
# 执行创建表操作
cursor.execute(create_table_sql)
print("表创建成功!")
# 验证表是否存在
cursor.execute("SHOW TABLES LIKE 'students'")
result = cursor.fetchone()
if result:
print(f"验证: 表 {result['Tables_in_bdpd_rmv (students)']} 已存在")
# 查看表结构
cursor.execute("DESCRIBE students")
columns = cursor.fetchall()
print("\n表结构:")
for col in columns:
print(f"{col['Field']:12} | {col['Type']:20} | {col['Null']} | {col['Key']} | {col['Default']}")
# 提交事务(DDL操作通常自动提交,但显式提交更安全)
connection.commit()
except pymysql.Error as e:
print(f"数据库操作错误: {e}")
connection.rollback()
finally:
# 关闭数据库连接
connection.close()
print("\n数据库连接已关闭")
```
### 代码解析:
1. **游标创建**:`with connection.cursor() as cursor` 创建游标对象并自动管理资源
2. **SQL语句**:使用多行字符串编写清晰的CREATE TABLE语句
3. **表结构设计**:
- `id`:自增主键
- `name`:必填字段
- `age`:无符号小整数
- `email`:唯一约束
- 自动时间戳:记录创建和更新时间
4. **验证操作**:
- `SHOW TABLES` 验证表是否创建成功
- `DESCRIBE` 查看表结构详情
5. **错误处理**:捕获pymysql特定异常并回滚操作
6. **资源管理**:确保连接最后关闭
### 创建表的最佳实践:
1. **使用`IF NOT EXISTS`**:避免重复创建导致的错误
2. **明确字符集**:`CHARSET=utf8mb4`支持所有Unicode字符
3. **指定存储引擎**:`ENGINE=InnoDB`支持事务和外键
4. **添加注释**:复杂表结构可添加`COMMENT`说明
5. **设计索引**:对频繁查询的字段添加索引(如`email`的UNIQUE约束)
阅读全文
相关推荐



















