Python进阶-----操作mysql数据库
创始人
2025-05-30 18:43:33
0

目录

前言:

安装pymysql

测试连接数据库

导入模块

测试连接查询操作

返回结果fecthone、fecthmany、fecthall

创建和管理数据库

表的创建和增删改查

1.创建表

 2.查看表结构

 3.查看全部表

4.删除表

5.面向对象写法 


前言:

        前面学习了MySQL的基础语句,就有人会问,那怎么去通过编程语言来操作mysql数据库呢,这总不能只能用sql指令来去操作吧?答案是肯定可以通过编程语言去操作的,只是sql指令是操作数据库的基础指令,编程语言只是其辅助作用的,把数据库与其他程序进行结合。那这一期我就来讲解怎么去通过Python去连接MySQL数据库,同时实现数据库等相关操作

安装pymysql

什么是pymysql 

pymysql是Python中操作数据库的第三方模块,通过这个模块的相关方法,我们可以连接并且去操作mysql数据库。

安装

进入cmd,然后输入 pip install pymysql

 等待一段时间就会安装好了的,然后输入 pip list 查看是否安装好,如图所示(说明已经安装好了):

好了,安装完成了之后就开始写代码了。

测试连接数据库

导入模块

import pymysql as psql

测试连接查询操作

import pymysql as psql
#连接数据库
db=psql.connect(host='localhost', #这里是表示数据库地址user='heweijie',    #这里是表示用户名password='heweijie',    #这里是表示passworddatabase='hello',   #这里是表示要连接的数据库名字charset='utf8'      #这里是字符编码,一般都选utf8
)#创建读取游标
cur=db.cursor()
sql=r'select version();' #sql语句,查看mysql版本cur.execute(sql)      #执行sql语句
data=cur.fetchone()   #返回一条信息print(data)cur.close()     #关闭游标
db.close()      #关闭数据库的连接#输出结果:('8.0.30',)

这里可以看我们成功连接了数据库,同时返回一条结果,要注意,当我们去结束使用数据库的时候要记得去关闭数据库的连接,免得造成数据库的数据泄露等问题。

connect() 方法参数

参数说明
host=数据库连接地址
user=数据库用户名
password=数据库password
database=要连接的数据库名字
port=3306连接端口,一般玩3306
charset=utf8设置字符集,一般为utf8
connect_timeout=10连接数据库超时时间,一般默认为10秒
dsn数据源名称,给出该参数表示数据库依赖

返回结果fecthone、fecthmany、fecthall

 当我们去执行sql查询指令的时候,我们要获取到返回的结果,但是返回的结果可以是单行,也可以是自定义多行,也可以是返回全部结果,要想实现这样的效果我们就要要用到fecthone、fecthmany、fecthall 这三个方法了。下面看例子

 当前数据库表信息:


#创建读取游标
cur=db.cursor()
sql=r'select *from user' #sql语句,查看mysql版本
cur.execute(sql)      #执行sql语句#返回一条信息
data1=cur.fetchone()
print('fecthone>>>',data1)#返回自定义条数
data2=cur.fetchmany(5)
print('fetchmany>>>',data2)#返回全部信息
data3=cur.fetchall()
print('fecthall>>>',data3)

 这时你们会发现一个现象,每次返回信息后,再次获取信息时,就不会再返回这条信息了,而是接着往下读取。这里跟文本文件读取是一样的,游标cur是往下读取的,所以前面已经获取到的信息就不再会返回。如果你想返回前面的信息话,你可以重新创建游标,执行新的指令就OK了。

创建和管理数据库

        sql指令是操作数据库的基础指令,而编程语言是起辅助作用的,所以真正意义上操作数据库的是sql指令,我们通过编程语言只是去把获取到的信息进行处理。这里就来看看怎么去通过Python来去创建一个数据库

import pymysql as psql
class Database:'''通过面对对象的方式去创建一个数据库以及实现数据库管理操作方法'''def __init__(self):self.db=psql.connect(host='localhost',user='heweijie',password='heweijie',charset='utf8')#操作游标self.cur = self.db.cursor()def create(self,name):'''创建一个数据库,名字为name,自行输入'''try:sql=fr'create database if not exists {name}'self.cur.execute(sql)except Exception as e:print(e)print('创建失败')self.db.rollback() #事物的回滚操作,就是回到开始def showdatabases(self):'''查看全部数据库名字'''sql=r'show databases'self.cur.execute(sql)result=self.cur.fetchall()return result#删除数据库def dropdatabase(self,name):try:sql=fr'drop database {name}'self.cur.execute(sql)except Exception as e:print(e)print('删除失败')self.db.rollback()def close(self):'''关闭连接,结束操作'''self.cur.close()self.db.close()
#操作示例:
if __name__ == '__main__':  d=Database()d.create('fucc')print(d.showdatabases())d.dropdatabase('fucc')print(d.showdatabases())d.close()

表的创建和增删改查

        表是数据库里面储存容器,数据基本上是储存到表里头,下面通过创建表操作对象去对表中的数据进行操作。

1.创建表

创建一个表,首先要连接到数据库,获取到当前的数据库db,然后输入sql指令来去创建表,sql 指令:create table if not exists 表名(……表结构……);

def connect(database_name):db = psql.connect(host='127.0.0.1',user='heweijie',password='heweijie',port=3306,database=database_name,charset='utf8')return db #返回当前连接的数据库
def createtable(name):db=connect('test') #数据库名字为testcur=db.cursor()try:sql=f'create table if not exists {name}(id int primary key auto_increment,name char(50),num int);'print('创建成功')except Exception as e:print(e)db.rollback()

 2.查看表结构

sql 指令是 :desc 表名;

#………………
def desctable(name): #表的名字为namedb=connect('test')cur=db.cursor()sql=f'desc {name}'cur.execute(sql)print(cur.fetchall()) #输出全部结果

 3.查看全部表

sql 指令: show tables;

#…………
def showtables():db=connect('test')cur=db.cursor()sql='show tables;'cur.execute(sql)print(cur.fetchall())

4.删除表

sql 指令:drop table 表名;

#………………
def droptable(name):db = connect('test')cur = db.cursor()try:sql = f'drop table {name};'cur.execute(sql)print('删除成功')except Exception as e:print(e)db.rollback()

5.面向对象写法 

#创建表以及操作
class Table(object):def __init__(self,database_name):'''连接数据库database_name,自写'''self.db=psql.connect(host='127.0.0.1',user='heweijie',password='heweijie',port=3306,database=database_name,charset='utf8')self.cur=self.db.cursor()def create(self,sql):'''创建表,sql语句自行写入'''try:self.cur.execute(sql)print('create successfully')except Exception as e:print(e)self.db.rollback()def desctable(self,table):'''查看表结构'''sql=fr'desc {table};'self.cur.execute(sql)result=self.cur.fetchall()print(result)def showtables(self):'''查看这个数据库里面的全部表'''sql=f'show tables;'self.cur.execute(sql)result=self.cur.fetchall()print(result)def droptable(self,name):'''把名字为name的表删除'''try:sql=f'drop table {name};'self.cur.execute(sql)except Exception as e:print(e)self.db.rollback()def insert(self,sql):'''插入数据,sql语句自写'''try:self.cur.execute(sql)except Exception as e:print(e)self.db.rollback()def selectdata(self,sql):'''查询数据,sql语句自写'''self.cur.execute(sql)result=self.cur.fetchall()print(result)
#使用示例
if __name__ == '__main__':user=Table('hello')user.create(r'create table if not exists mydatabase (id int primary key auto_increment,name char(50),num int);')user.showtables()user.desctable('mydatabase')user.selectdata('select *from user;')#user 是另外一个表user.droptable('mydatabase')user.showtables()

以上就是今天的内容了,我们下一期再见!

 分享一张壁纸:

相关内容

热门资讯

AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
AWR报告解读 WORKLOAD REPOSITORY PDB report (PDB snapshots) AW...
AWS管理控制台菜单和权限 要在AWS管理控制台中创建菜单和权限,您可以使用AWS Identity and Access Ma...
​ToDesk 远程工具安装及... 目录 前言 ToDesk 优势 ToDesk 下载安装 ToDesk 功能展示 文件传输 设备链接 ...
群晖外网访问终极解决方法:IP... 写在前面的话 受够了群晖的quickconnet的小水管了,急需一个新的解决方法&#x...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
Azure构建流程(Power... 这可能是由于配置错误导致的问题。请检查构建流程任务中的“发布构建制品”步骤,确保正确配置了“Arti...