本关任务:使用 pymysql
在名为 mydb
的数据库下,创建一张用户表(users
)
pymysql
?连接指定数据库并且创建数据表?以下是一个样例代码:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import pymysql
# 创建数据库连接
conn = pymysql.connect(
# mysql服务器主机地址
host='127.0.0.1',
# mysql服务器连接端口
port=3306,
# 用户名
user='user',
# 数据库名
db='db_name',
# 用户密码
passwd='password',
# 编码格式
charset='utf8'
)
# 使用cursor()函数创建一个游标对象
cursor = conn.cursor()
# 使用execute()函数执行一条sql语句,创建一个名为`area`的数据表,表中包含area_id以及area_name两个属性,并且指定数据库引擎为MyISAM
cursor.execute('''CREATE TABLE area
(
area_id INT(16) AUTO_INCREMENT
PRIMARY KEY,
area_name VARCHAR(64) NOT NULL
)
ENGINE = MyISAM''')
# 关闭游标
cursor.close()
# 关闭数据库连接
conn.close()
补充:上例中指定了
area_id
的数据类型为 int(16),并且设置为自增主键(只有整形数据才能使用 AUTO_INCREMENT 来设置自增标识),area_name
使用 varchar(64) 来储存相关信息,并且使用 not null 代表插入此数据表中的数据不能为空(null)并不是不能为""(空字符串),ENGINE 代表数据库引擎,在 MySQL 中常用的数据库引擎有如下几种:
InnoDB:支持事务处理,支持外键,支持崩溃修复能力和并发控制。如果需要对事务的完整性要求比较高(比如银行),要求实现并发控制(比如售票),那选择 InnoDB 有很大的优势。如果需要频繁的更新、删除操作的数据库,也可以选择InnoDB,因为支持事务的提交(commit)和回滚(rollback)。
MyISAM:插入数据快,空间和内存使用比较低。如果表主要是用于插入新记录和读出记录,那么选择 MyISAM 能实现处理高效率。如果应用的完整性、并发性要求比较低,也可以使用。
MEMORY:所有的数据都在内存中,数据的处理速度快,但是安全性不高。如果需要很快的读写速度,对数据的安全性要求较低,可以选择 MEMOEY。它对表的大小有要求,不能建立太大的表。所以,这类数据库只使用在相对较小的数据库表。
根据提示,在右侧编辑器补充代码,完成以下需求:
在名为 mydb
的数据库创建一张用户表(users
),字段如下:
字段名 | 类型 | 描述 |
---|---|---|
id | int(11) | 主键ID |
username | varchar(255) | 用户名 |
sex | varchar(255) | 性别 |
age | int(11) | 年龄 |
import pymysql
"""
需求:在名为 mydb 的数据库下,创建一个用户表(users),字段如下:
id int(11) PRIMARY KEY
username varchar(255)
sex varchar(255)
age int(11)
"""
if __name__ == '__main__':
# **********begin********** #
# 获取连接
conn = pymysql.connect(
host='127.0.0.1',
port=3306,
user='root',
db='mydb',
passwd='123123',
charset='utf8'
)
# 获取光标
cursor = conn.cursor()
cursor.execute('''
CREATE TABLE users
(
id int(11) PRIMARY KEY,
username VARCHAR(255),
sex VARCHAR(255),
age int(11))
''')
# 执行SQL
# 关闭资源
cursor.close()
conn.close()
# **********end********** #