Python高级培训-第六次任务

菜鸟教程:Python3 MySQL 数据库连接 – PyMySQL 驱动 | 菜鸟教程

学习教程(视频):Python连接MySQL数据库【趣学Python】_哔哩哔哩_bilibili

学习教程(文件):Python连接MySQL数据库_Python全栈之巅-CSDN博客_python 连接mysql数据库

数据库连接:

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

  • 您已经创建了数据库 TESTDB.
  • 在TESTDB数据库中您已经创建了表 EMPLOYEE
  • EMPLOYEE表字段为 FIRST_NAME, LAST_NAME, AGE, SEX 和 INCOME。
  • 连接数据库TESTDB使用的用户名为 "testuser" ,密码为 "test123",你可以可以自己设定或者直接使用root用户名及其密码,Mysql数据库用户授权请使用Grant命令。
  • 在你的机子上已经安装了 Python MySQLdb 模块。
  • 如果您对sql语句不熟悉,可以访问菜鸟教程:SQL 教程 | 菜鸟教程

 导入库

import pymysql

连接数据库


DBHOST = 'localhost'
DBUSER = '用户名'
DBPASS = '密码'
DBNAME = '连接名称'

try except捕获异常


try:
    db = pymysql.connect(host=DBHOST,user=DBUSER, password=DBPASS, database=DBNAME)
    print('数据库连接成功!')
except pymysql.Error as e:
    print('数据库连接失败'+str(e))

 创建一张新表

# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()

# 使用 execute()  方法执行 SQL 查询
# cursor.execute("SELECT VERSION()")

# 创建表之前先检查是否存在,如果存在则删除
cursor.execute('DROP TABLE IF EXISTS Student')

# 编辑sql语句
#sqlQuery = "CREATE TABLE Student(Name CHAR(20) NOT NULL ,Email CHAR(20),Age int )"
sqlQuery = "CREATE TABLE Student(Name CHAR(20) NOT NULL ,Age CHAR(20),Major CHAR(20) ,Num CHAR(20))ENGINE=InnoDB " \
           "DEFAULT CHARSET=gbk; "

cursor.execute(sqlQuery)

 此处注意编码格式:DEFAULT CHARSET=gbk 如果没有这个语句,向数据库中插入中文会报错 

参考教程:解决Python往MySQL插入中文时报错的问题_aaa2549769750的博客-CSDN博客

 

向表中插入数据

# 编辑sql语句
sqlQuery=" INSERT INTO Student (Name, Age, Major, Num) VALUE (%s,%s,%s,%s) "

# 编辑准备插入的值
value=('小西','20级','移动软件','123456')

# 执行sql语句
try:
    cursor.execute(sqlQuery,value)
    db.commit()
    print('数据插入成功!')
except pymysql.Error as e:
    print("数据插入失败:"+str(e) )
    db.rollback()

查询表中的数据

Python查询Mysql使用 fetchone() 方法获取单条数据, 使用fetchall() 方法获取多条数据。

  • fetchone(): 该方法获取下一个查询结果集。结果集是一个对象
  • fetchall(): 接收全部的返回结果行.
  • rowcount: 这是一个只读属性,并返回执行execute()方法后影响的行数。

实例:

# 编辑sql语句
sqlQuery = "SELECT * FROM Student"

# 使用fetchall()方法接收全部的返回结果行
try:
    cursor.execute(sqlQuery)
    results=cursor.fetchall()
    for row in results:
        if row[0]=='小西':
            name=row[0]
            age=row[1]
            major=row[2]
            num=row[3]
            print('Name:%s,age:%s,major:%s,num:%s'%(name,age,major,num))
except pymysql.Error as e:
    print("数据查询失败:"+str(e))

更新表中的数据

#编辑sql语句
sqlQuery = "UPDATE Student SET Name= %s WHERE Name=%s"

#编辑更新的信息
value = ('John', 'updated name')

#提交修改
try:
    cur.execute(sqlQuery, value)
    db.commit()
    print('数据更新成功!')
except pymysql.Error as e:
    print("数据更新失败:"+str(e))
    # 发生错误时回滚
    db.rollback()

删除表中的数据

#编辑sql语句
sqlQuery = "DELETE FROM Student where Name=%s"

#编辑更新的信息
value = ('John')

#提交修改
try:
    cur.execute(sqlQuery, value)
    db.commit()
    print('Date Deleted Successfully')
except pymysql.Error as e:
    print("数据删除失败:"+str(e))
    # 发生错误时回滚
    db.rollback()

删除一张表

#编辑sql语句
sqlQuery='DROP TABLE IF EXISTS Student'

#提交修改
cur.execute(sqlQuery)
print('表删除成功!')

关闭数据库连接

# 关闭数据库连接
db.close()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值