定制化开发Python数据库编程之pymysql详解

文章目录


前言

定制化开发学习之前务必安装MySQL定制化开发并已启动相关服务,MySQL定制化开发安装方法及查看初始密定制化开发码见下面链接文章的第一部分:


一、pymsql的安装

在python3定制化开发的环境中直接使用以下命令即可:

pip install pymsql#或者pip3 install pymysql
  • 1
  • 2
  • 3

定制化开发安装完毕后可使用以下命令查看:

pip list | grep PyMySQL #定制化开发注意大小写
  • 1
  • 2

结果如下:


二、定制化开发连接数据库

pymysql定制化开发连接数据库使用的是 pymsql.connect() 函数,定制化开发其常用参数如下:

参数说明
dsn定制化开发数据源名称,给出该参数表示数据库依赖
host=None数据库连接地址
user=None数据库用户名
password=‘’数据库用户密码
database=None要连接的数据库名称
port=3306端口号,默认为3306
charset=‘’要连接的数据库的字符编码(可以在终端登陆mysql后使用 \s 查看,如下图)
connect_timeout=10连接数据库的超时时间,默认为10
port=3306端口号,默认为3306


连接完数据库后,需要创建一个游标对象,模块会通过游标对象来执行sql语句以及获取查询结果,接下来直接通过代码展示各方法。
示例:

import pymysqldb = pymysql.connect(    host="localhost",     port=3306,    user='root',    #在这里输入用户名    password='888888',     #在这里输入密码    charset='utf8mb4'     ) #连接数据库cursor = db.cursor() #创建游标对象sql = 'show databases' #sql语句cursor.execute(sql)  #执行sql语句one = cursor.fetchone()  #获取一条数据print('one:',one)many = cursor.fetchmany(3) #获取指定条数的数据,不写默认为1print('many:',many)all = cursor.fetchall() #获取全部数据print('all:',all)cursor.close()  db.close()  #关闭数据库的连接
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

运行结果:

one: ('coldbox',)many: (('coldboxtest',), ('db_student',), ('information_schema',))all: (('mysql',), ('performance_schema',), ('sys',), ('test',), ('wan',))
  • 1
  • 2
  • 3

从结果可以看出,fetchone(),fetchmany(size),fetchall() 三个函数返回值都是元组,但是fetchone()返回的是单个元组,另外两个返回的都是元组的嵌套。


三、创建和管理数据库

使用游标对象来执行创建和删除数据库的sql语句示例:

import pymysqldb = pymysql.connect(    host="localhost",     port=3306,    user='root',    #在这里输入用户名    password='888888',     #在这里输入密码    charset='utf8mb4'     )cursor = db.cursor() #创建游标对象try:    sql = 'show databases'     cursor.execute(sql)    print('未创建数据库前:',cursor.fetchall()) #获取创建数据库前全部数据库    dbname = 'justtest'    sql = 'create database if not exists %s'%(dbname) #创建数据库    cursor.execute(sql)    sql = 'show databases'     cursor.execute(sql)    print('创建新的数据库后:',cursor.fetchall()) #获取创建数据库后全部数据库    sql = 'drop database if exists %s'%(dbname) #删除数据库    cursor.execute(sql)    sql = 'show databases'     cursor.execute(sql)    print('删除新的数据库后:',cursor.fetchall()) #获取删除数据库后全部数据库except Exception as e:    print(e)    db.rollback()  #回滚事务finally:    cursor.close()     db.close()  #关闭数据库连接
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38

运行结果:

未创建数据库前: (('coldbox',), ('coldboxtest',), ('db_student',), ('information_schema',), ('mysql',), ('performance_schema',), ('sys',), ('test',), ('wan',))创建新的数据库后: (('coldbox',), ('coldboxtest',), ('db_student',), ('information_schema',), ('justtest',), ('mysql',), ('performance_schema',), ('sys',), ('test',), ('wan',))删除新的数据库后: (('coldbox',), ('coldboxtest',), ('db_student',), ('information_schema',), ('mysql',), ('performance_schema',), ('sys',), ('test',), ('wan',))
  • 1
  • 2
  • 3

四、创建和管理表

使用游标对象来执行创建和管理表的sql语句示例:

import pymysqldb = pymysql.connect(    host="localhost",     port=3306,    user='root',    #在这里输入用户名    password='888888',     #在这里输入密码    charset='utf8mb4',    database='justtest'     #指定操作的数据库    )cursor = db.cursor() #创建游标对象try:    tableName = 'user'    sql = 'create table  %s (id varchar(20) not null, name varchar(20) not null, primary key(id))'%(tableName)     cursor.execute(sql)     #执行sql语句,创建表    sql = 'show tables'    cursor.execute(sql)    print('显示创建的表:',cursor.fetchall())  #显示创建的表    sql = 'desc %s'%(tableName)     cursor.execute(sql)    print('显示表结构:',cursor.fetchall())  #显示表结构except Exception as e:    print(e)    db.rollback()  #回滚事务finally:    cursor.close()     db.close()  #关闭数据库连接
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35

运行结果:

显示创建的表: (('user',),)显示表结构: (('id', 'varchar(20)', 'NO', 'PRI', None, ''), ('name', 'varchar(20)', 'NO', '', None, ''))
  • 1
  • 2

总结

对于修改表结构,插入,查询,删除数据等操作,与上面的操作大体一样,主要是对 sql 语句的编写,此处不做赘述。
整体过程:
连接数据库 -> 创建游标对象 -> 编写sql语句 -> 执行sql语句 -> 获取结果 -> 关闭数据库连接

connect() 函数常用参数:

参数说明
dsn数据源名称,给出该参数表示数据库依赖
host=None数据库连接地址
user=None数据库用户名
password=‘’数据库用户密码
database=None要连接的数据库名称
port=3306端口号,默认为3306
charset=‘’要连接的数据库的字符编码(可以在终端登陆mysql后使用 \s 查看,如下图)
connect_timeout=10连接数据库的超时时间,默认为10
port=3306端口号,默认为3306

connect() 函数返回的连接对象的方法总结:

方法名说明
close()关闭数据库的连接
commit()提交事务
rollback()回滚事务
cursor()获取游标对象,操作数据库,如执行DML操作,调用存储过程等

游标对象的方法:

方法名说明
callproc(procname,[,parameters])调用存储过程,需要数据库支持
close()关闭当前游标
execute(operation,[,parameters])执行数据库操作,sql语句或者数据库命令
executemany(operation, seq_of_params)用于批量操作
fetchone()获取查询结果集合中的下一条记录
fetchmany(size)获取指定数量的记录
fetchall()获取查询结果集合所有记录
nextset()跳至下一个可用的数据集
arraysize指定使用fetchmany()获取的行数,默认为1
setinputsizes(size)设置调用execute*()方法时分配的内存区域大小
setoutputsizes(size)设置列缓冲区大小,对大数据列尤其有用
网站建设定制开发 软件系统开发定制 定制软件开发 软件开发定制 定制app开发 app开发定制 app开发定制公司 电商商城定制开发 定制小程序开发 定制开发小程序 客户管理系统开发定制 定制网站 定制开发 crm开发定制 开发公司 小程序开发定制 定制软件 收款定制开发 企业网站定制开发 定制化开发 android系统定制开发 定制小程序开发费用 定制设计 专注app软件定制开发 软件开发定制定制 知名网站建设定制 软件定制开发供应商 应用系统定制开发 软件系统定制开发 企业管理系统定制开发 系统定制开发