零基础 学 python开发 (Genius套餐A) 三十七

版权声明:Genius https://blog.csdn.net/weixin_41987706/article/details/90199651

夜光序言:

 

 

夜光,即使在那个世界,也要一直微笑哦~~

因为——我最喜欢你的笑容。

 

正文:夜光,接下来和数据库对接~~

7.1 MySQL 数据库连接
 
7.1.1 目标 


数据可以存储在文件中,但是复杂的数据如果存储在文件中就必须对数据进行复杂的格式化工作,要不然就分不清各个数据字段了。数据库时专门用来存储数据的系统,使用数据库能自动格式化数据,能存储复杂的数据。教学目标是掌握 Python 操作数据库的方法,使得程序能存储诸如学生的数据。
 



7.1.2 连接 MySQL 数据库 


MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件。

MySQL 所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。
Python 没有自带对 MySQL 数据库的支持,必须另外安装。安装也很简单,进入 cmd:

执行
pip3 install PyMySQL

就可以安装 pymysql 的驱动程序,在 Python 中就可以使用 import pymysql 引入这个模
块驱动 MySQL 数据库。
Python 连接 MySQL 数据库的方法如下:

con= pymysql.connect(host="127.0.0.1",port=3306,user="root",passwd="123456",db="mydb",charset="utf8")


其中 connect 是 pymysql 的连接函数,连接的数据库位于服务器 host 上,它可以是服务器的 IP 地址或者服务器名称,这里是 127.0.0.1 的本地 MySQL 数据库。port=3306 是 MySQL数据库的默认端口号。user,password 是 MySQL 中的一个用户名称与密码,其中 root 用户是最高级用户。db="mydb"是 MySQL 数据库的数据库名称,在连接之前必须在 MySQL 中建立名称为 mydb 的数据库。

charset="utf8"表示文本数据采用 utf8 编码。


例 7-1-1:Python 连接 MySQL 的 MyDB 数据库 


import pymysql
try:
 con = pymysql.connect(host="127.0.0.1", port=3306, user="root", passwd="123456", db="mydb", charset="utf8")
 print("连接成功")
 con.close()
except Exception as err:
 print(err)
执行该程序,如果 MySQL 是正常开启的而且 pymysql 正确安装,那么可以看到“连接成功”。


7.1.3 操作数据库 


Python 操作数据库的步骤主要有:
(1) 建立数据库连接,例如连接 test.db 的 sqlite3 数据库:

con = pymysql.connect(host="127.0.0.1", port=3306, user="root", passwd="123456", db="mydb", charset="utf8")


(2) 从连接对象获取数据库游标对象 cursor:


cursor = con.cursor(pymysql.cursors.DictCursor);
其中 cursor 是一个重要的对象,可以使用它执行各种各样的 SQL 命令,,方法是:
cursor.execute(SQL)
其中 execute 是 cursor 的方法,用来执行 SQL 命令。


(3) 操作完数据库后调用 commit()提交所有的操作,把更新写入数据库文件。
(4) 调用 con.close()关闭数据库。


例 7-1-2:在 MySQL 的 MyDB 数据库中创建一张学生记录表 students,包含学号 pNo,姓名 pName,性别 pGender,年龄 pAge 字段。 


 

import pymysql
sql="""
create table students
(
 pNo varchar(16) primary key,
 pName varchar(16),
 pGender varchar(8),
 pAge int
)
"""
con = pymysql.connect(host="127.0.0.1", port=3306, user="root", passwd="123456", db="mydb", charset="utf8")
cursor = con.cursor(pymysql.cursors.DictCursor);
try:
 cursor.execute(sql)
 print("done")
except Exception as err:
 print(err)
cursor.close()


第一次执行程序结果显示"done",说明创建数据表 students 成功,第二次运行程序可以看到结果"table students already exists",它表明再次执行建立表格的命令时失败了,因为students 表已经存在。


7.1.4 【案例】学生数据表的创建 


1、案例描述 
建立学生表 students,并插入几条记录。
 
2、案例分析 
学生数据表 students 定义如下:
create table students
(
 pNo varchar(16) primary key,
 pName varchar(16),
 pGender varchar(8),
 pAge int
)
这个表可以在 MySQL 环境中创建,也可以使用 Python 的代码创建。
 
3、案例代码 
import pymysql
sql="""
create table students
(
 pNo varchar(16) primary key,
 pName varchar(16),
 pGender varchar(8),
 pAge int
)
"""
con = pymysql.connect(host="127.0.0.1", port=3306, user="root", passwd="123456", db="mydb", charset="utf8")
cursor = con.cursor(pymysql.cursors.DictCursor);
try:
 cursor.execute(sql)
except:
 cursor.execute("delete from students")
cursor.execute("insert into students (pNo,pName,pGender,pAge) values ('1','A','男',20)")
cursor.execute("insert into students (pNo,pName,pGender,pAge) values ('2','B','女',21)")
con.commit()
con.close()
print("done")
程序在开始执行语句:
try:
 cursor.execute(sql)
except:
 cursor.execute("delete from students")
如果 students 表不存在就建立,如果存在就抛出异常,而程序不理会这个异常,接下来删除这个表中已经存在的记录。

最后使用:
 cursor.execute("insert into students (pNo,pName,pGender,pAge) values ('1','A','男',20)")
 cursor.execute("insert into students (pNo,pName,pGender,pAge) values ('2','B','女',21)")


执行两条 insert 的 SQL 命令插入两条记录,执行完毕后调用:
con.commit()

把更新写入数据库,这是很有必要的,不然插入的记录还在内存中,没有真正写到数据库表中,最后执行 con.close()关闭数据库。

执行完毕后我们可以在 MySQL 的环境中看到 studnets 表中包含这样两条记录。

猜你喜欢

转载自blog.csdn.net/weixin_41987706/article/details/90199651