python连接数据库选修课管理系统_Python连接数据库

Python连接数据库需导入pymysql

pymysql是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用mysqldb。
pymysql遵循 Python 数据库 API v2.0 规范,并包含了 pure-Python MySQL 客户端库。

pymysql 安装

在使用 pymysql之前,我们需要确保 pymysql已安装。

如果还未安装,我们可以使用以下命令安装最新版的 pymysql:

pip install pymysql

创建数据库连接

我们需要用到两个对象:

1.Connection对象

  • 用于建立与数据库的连接
  • 创建对象:调用connect()方法

a58054bcb1cd7adb5b19c5aaa60ec2ef.png

2770542634c70316c13afaff3fd02554.png

2.Cursor对象

Cursor(游标)对象:

  • 执行sql语句
  • 创建对象:调用Connection对象的cursor()方法

11bf34154b3780e5779b7ac851cfc2a2.png

3b16c12e04537d88d0cfd8106f71ab7e.png

实例:

1.未指定具体的数据库,做了个连接数据库,查询当前数据库的操作 show databases;

60309298f3b42daa1c5a5d42208e0313.png

18915379c7de214beae3f6f46118bc5e.png

2.连接数据库前,请先确认以下事项:

  • 您已经创建了数据库 pythondemo
  • 在pythondemo数据库中您已经创建了表 student
  • student表字段为 sno sname age
  • 连接数据库pythondemo使用的用户名为 "root" ,密码为 "root",你可以自己设定或者直接使用root用户名及其密码,Mysql数据库用户授权请使用Grant命令
  • 在你的机子上已经安装了 pymysql模块

0b6a41baece73c7007bb3a61d25d2845.png
mysql> CREATE DATABASE pythondemo CHARACTER SET utf8 COLLATE utf8_general_ci;
Query OK, 1 row affected (0.00 sec)
--创建学生表
create table student(
	sno INT(8) PRIMARY KEY auto_increment,
	sname VARCHAR(30),
	age INT(2)
);
select * from student;

9a7671144c5e17484f6d9064a51fa2e4.png

1.插入数据

import pymysql
'''
1.创建连接
2.创建执行sql语句的对象
3.编写sql,并执行sql
4.处理结果集
5.关闭连接
'''
#创建连接             本机名     用户   密码  要连接的库   端口
con=pymysql.connect('localhost','root','root','pythondemo',3306) #创建连接
cursor=con.cursor() #使用 cursor() 方法创建一个游标对象 cursor对象(用来执行sql语句)
try:
    sql="insert into student(sname,age) values('张三',20),('李四',23)" #SQL 插入语句
    # 使用 execute()  方法执行 SQL 查询 
    cursor.execute(sql)
    con.commit()#提交事务
except:
    print("插入错误")
    con.rollback()#回滚事务
finally:
    con.close()

427acbcd03a2b9a0ff4c29e6f898395a.png

2.修改数据

import pymysql
con=pymysql.connect('localhost','root','root','pythondemo',3306)
cursor=con.cursor()
try:
    sql="update student set age=24 where sno=1"
    cursor.execute(sql)
    con.commit()
except:
    print("修改数据出错")
    con.rollback()
finally:
    con.close()

4f7b5894aad4b16cd01b2ea5b2c4da87.png

3.删除数据

import pymysql
con=pymysql.connect('localhost','root','root','pythondemo',3306)
cursor=con.cursor()
try:
    sql="delete from student where sno=1"
    cursor.execute(sql)
    con.commit()
except:
    print("删除数据出错")
    con.rollback()
finally:
    con.close()

0097c5fd2e863c38f18feab078bbe419.png

4.查询数据

import pymysql
con=pymysql.connect('localhost','root','root','pythondemo',3306)
cursor=con.cursor()
try:
    sql="select * from student"
    cursor.execute(sql)
    # 处理结果集
    results = cursor.fetchall()
    for row in results:
        sno=row[0]
        sname=row[1]
        age=row[2]
        print("学号:{},姓名:{},年龄:{}".format(sno,sname,age))
except:
    print("查询数据出错")
finally:
    con.close()

d7e01080d0a4beec49b53f65aa9eee46.png

5.删除student表

注意:删除表并不需要commit()

import pymysql
con=pymysql.connect('localhost','root','root','pythondemo',3306)
cursor=con.cursor()
try:
    sql="drop table student"
    cursor.execute(sql)
except:
    print("删除表出错")
finally:
    con.close()

c446cc9bc1a7b7b951bbbc05d709a69b.png
fetchone():返回单个的元组,也就是一条记录(row),如果没有结果 , 则返回 None fetchall():返回多个元组,即返回多条记录(rows),如果没有结果,则返回 () 注意:在MySQL中是null,而在Python中则是None

版权声明:本文为weixin_34725044原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。