目录
- 前言:
- 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', #这里是表示password database='hello', #这里是表示要连接的数据库名字 charset='utf8' #这里是字符编码,一般都选utf8 ) #创建读取游标 cur=db.cursor() sql=r'select version();' #sql语句,查看mysql版本 cur.execute(sql) #执行sql语句python 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('fuccwww.devze.com') 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') #数据库名字为test cur=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): #表的名字为name db=connect('test') cur=db.cursor() sql=f'desc {name}' cur.execute(sql) print(cur.fetyshzLchahttp://www.devze.comll()) #输出全部结果
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语句自写''' yshzL 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()
到此这篇关于使用Python实现Mysql数据库相关操作详解的文章就介绍到这了,更多相关Python操作Mysql数据库内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!
精彩评论