第1关:python数据库编程之创建数据库

任务描述

本关任务:使用 pymysql 创建一个名为 mydb 的数据库。

相关知识
什么是数据库?

数据库( 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库(本平台已经提供)

以下是一个样例代码:

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

注意:在数据库中有字符集,以及排序规则两个设置

字符集:定义了字符以及字符的编码。

在数据库中默认编码的不同可能导致数据乱码的现象,推荐设置字符集为utf8

创建数据库时在尾部追加default cha\fracter set utf8即可设置

排序规则:是指对指定字符集下不同字符的比较规则。其特征有以下几点:

1、两个不同的字符集不能有相同的排序规则 2、两个字符集有一个默认的排序规则 3、有一些常用的命名规则。如_ci结尾表示大小写不敏感(caseinsensitive),_cs表示大小写敏感(case sensitive),_bin表示二进制的比较(binary).

创建数据库时在尾部追加collate utf8_general_ci即可完成排序规则的设置

编程要求

根据提示,在右侧编辑器补充代码,创建一个名为 mydb 的数据库。

代码:

import pymysql

"""
    需求:创建一个名为 mydb 的数据库
"""
if __name__ == '__main__':
    # **********begin********** #
    conn = pymysql.connect(
       host='127.0.0.1',
       port=3306,
       user='root',
       passwd='123123',  
       charset='utf8'
    )


    # 获取连接
    cursor = conn.cursor()
    
    # 获取光标
    cursor.execute("create database mydb")

    # 执行SQL,创建数据库
    cursor.close()

    # 关闭资源
    conn.close()


    # **********end********** #

  • 39
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
Python数据库编程是指使用Python编程语言来连接和操作数据库Python提供了许多用于实现这一目的的库和模块,其中最常用的是`sqlite3`、`MySQLdb`、`psycopg2`和`pymongo`等。 如果你想使用SQLite数据库,可以使用Python标准库中的`sqlite3`模块。它提供了一系列函数和方法来连接SQLite数据库、执行SQL查询和更新操作等。 下面是一个简单的示例,演示如何使用sqlite3模块进行数据库编程: ```python import sqlite3 # 连接到数据库(如果不存在则会创建一个新的数据库文件) conn = sqlite3.connect('mydatabase.db') # 创建游标对象 cursor = conn.cursor() # 创建表 cursor.execute('''CREATE TABLE IF NOT EXISTS employees (id INTEGER PRIMARY KEY, name TEXT, age INTEGER)''') # 插入数据 cursor.execute("INSERT INTO employees VALUES (1, 'John Doe', 25)") # 提交更改 conn.commit() # 查询数据 cursor.execute("SELECT * FROM employees") result = cursor.fetchall() for row in result: print(row) # 闭游标和数据库连接 cursor.close() conn.close() ``` 在这个示例中,我们首先使用`sqlite3.connect()`函数连接到一个名为`mydatabase.db`的SQLite数据库。然后,我们创建了一个名为`employees`的表,并插入了一条记录。最后,我们执行了一个查询并打印了结果。 除了SQLite,你还可以使用其他库来连接和操作其他类型的数据库,如MySQL、PostgreSQL和MongoDB等。具体的用法会因库的不同而有所差异,你可以根据自己的需求选择合适的库进行数据库编程

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jerry&

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值