@R星校长

1关:Python数据库编程之创建数据库

在现在的软件、web开发中,越来越离不开数据库的支持,MySQL是现在最流行的关系型数据库管理系统(RDBMS - Relational Database Management System),在WEB开发中,MySQL 是最好的 RDBMS 应用软件之一。在本教程中,会让大家快速掌握 python使用 MySQL 的相关知识,并轻松使用 MySQL数据库。

本关任务:使用pymysql 创建数据库。

什么是数据库?

数据库(Database)是一个集合了各种数据结构来组织、存储以及管理的数据仓库。
我们为什么不用文件的方式来储存数据呢?我们当然可以,但是在文件中的读写速度相对较慢,并且存在某部分数据无法直接提取等缺陷。
所以我们使用关系型数据库来储存以及管理大量数据。所谓的关系型数据库是建立在关系模型基础上的数据库。

RDBMS 术语

在我们开始学习之前我们先了解一些术语:

  • 数据库:数据库是一些关联表的集合。
  • 数据表:表是数据的矩阵。数据库中的表看起来像一个 EXCEL表格。
  • 列:一列(数据元素) 包含了相同类型的数据, 例如用户信息的手机号。
  • 行:一行(=元组,或记录)是一组相关的数据,例如一条用户的注册信息。
  • 冗余:存储两倍数据,冗余降低了性能,但提高了数据的安全性。
  • 主键:主键是唯一的。一个数据表中只能存在一个主键。你可以使用主键来高效的查询数据。
  • 外键:外键常用于作为两个表之间的联系纽带。
  • 复合键:复合键(可称为组合键)将多个列组合成为一个索引。
  • 索引:使用索引可以快速的访问数据表中的特定信息,但是创建过多的索引会导致数据库的效率低下,因为数据库需要维护各个索引。
  • 参照完整性:参照的完整性要求关系中不允许引用不存在的实体。与实体完整性是关系模型必须满足的完整性约束条件,目的是保证数据的一致性。

以下图片就是一张简单的数据表:

  • 表头(header):每一列的标识名。
  • 列(col):具有相同数据类型的数据的集合。
  • 行(row):每一行用来描述某条记录的具体信息。
  • 值(value):行的具体信息, 每个值必须与该列的数据类型相同。
  • 键(key):键的值(复合键也同样是唯一的值)在当前列中具有唯一性。

Python 如何使用 MySQL?

python 最为强大的一点就是社区的庞大,有着各种方便使用的开源库,使 python在短短时间内就拥有了大量的用户,并且由于使用库及其简单,可以将其他语言中需要大量代码才能完成的操作浓缩于短短几行代码中。我们这里给出几种用与连接 MySQL的库:

  • MySQL-python
  • mysqlclient
  • PyMySQL
  • peewee
  • SQLAlchemy

可以在命令行中使用pip install (库名)来安装相应的第三方库。在本教程中我们使用的是pymysql来操作数据库。

如何使用pymysql连接数据库?
连接数据库之前,请确认以下事项:

你已经拥有有可用的MySQL数据库(本实训提供了MySQL环境)
拥有操作权限的数据库账号密码(本平台的默认账号为:root,密码为123123mysql服务器地址为127.0.0.1,默认端口地址3306
运行环境中拥有相应的pymysql库(本平台已经提供)
以下是一个样例代码:

#!/usr/bin/python
# -*- coding: UTF-8 -*-
import pymysql
# 创建数据库连接
conn = pymysql.connect(
    # mysql服务器主机地址
    host='127.0.0.1',
    # mysql服务器连接端口
    port=3306,
    # 用户名
    user='user',
    # 数据库名(若不选此参数则不指定具体数据库连接,我们可以使用use database来选择其它数据库)
    db='db_name',
    # 用户密码
    passwd='password',
    # 编码格式
    charset='utf8'
)
# 使用cursor()函数创建一个游标对象
cursor = conn.cursor()
# 使用execute()函数执行一条sql语句,创建一个名为`mydb`的数据库
cursor.execute("create database mydb")
# 关闭游标
cursor.close()
# 关闭数据库连接
conn.close()

注意:在数据库中有字符集,以及排序规则两个设置 字符集:定义了字符以及字符的编码。
在数据库中默认编码的不同可能导致数据乱码的现象,推荐设置字符集为utf8创建数据库时在尾部追加default cha\fracter set utf8即可设置。 排序规则:是指对指定字符集下不同字符的比较规则。其特征有以下几点:
1、两个不同的字符集不能有相同的排序规则。
2、两个字符集有一个默认的排序规则。
3、有一些常用的命名规则。如_ci结尾表示大小写不敏感(caseinsensitive),_cs表示大小写敏感(case sensitive),_bin表示二进制的比较(binary). 创建数据库时在尾部追加collate
utf8_general_ci即可完成排序规则的设置。

编程要求
根据提示,在右侧Begin-End区域补充代码,创建一个名为my_db,字符集为utf8,排序规则为utf8_general_ci的数据库。

开始你的任务吧,祝你成功!

#!/usr/bin/python
-*- coding: UTF-8 -*-
import pymysql
# 连接mysql,创建连接并返回连接对象
def connect():
    # 请在这里补充代码,完成本关任务,注意缩进格式为4个空格
    # ********* Begin ********* #
    conn = pymysql.connect(
        host='127.0.0.1',
        port=3306,
        user='root',
        passwd='123123',
        charset='utf8'
    )
    return conn
    # *********  End  ********* #
def test():
    # 创建连接,并且返回连接对象
    conn = connect()
    # 创建游标对象
    cursor = conn.cursor()
    # 请在这里补充代码,完成本关任务,注意缩进格式为4个空格
    # ********* Begin ********* #
    # 通过游标执行sql语句
    cursor.execute('create database `my_db` default character set utf8 collate utf8_general_ci')
    # *********  End  ********* #
    # 关闭游标
    cursor.close()
    # 关闭连接
    conn.close()



更多推荐

Python与MySQL编程基础(一)