python入门操作三大数据库(一)-mysql

这篇博客主要介绍了Python环境下操作MySQL数据库的基础知识,包括逻辑库的创建、删除、重命名和查询,数据表的创建、删除、更名、字段管理以及索引操作。此外,还详细讲解了数据的写入、删除、修改和各种查询方法,如无条件、条件、分组及表连接查询。
摘要由CSDN通过智能技术生成

前言

最近在学习使用python操作三大数据库(Mysql, Redis, MongoDB),记录一些常用的代码

运行环境

工具 版本
系统 windows 10 x64
python 3.7
PyCharm 2019.3.3 x64
MySQL 8.0.12.0

使用的库

import mysql.connector.pooling
import mysql.connector
import os

逻辑库操作

1.创建逻辑库

def setdatabase():
    try:
    	# 创建链接
        con = mysql.connector.connect(
            host='localhost',
            port='3306',
            user='root',
            password='password'
        )
        print('链接成功')
        # 创建游标
        cursor = con.cursor()
        database = 'helloword'
        sql = 'create database '+database+';'
        # 执行sql语句
        cursor.execute(sql)
        print('创建逻辑库成功')
        # 关闭链接
        con.close()
    except:
        if 'con' in dir():
            print('创建失败')
        else:
            print('链接失败')

2.删除逻辑库

def deldatabase():
    try:
        con = mysql.connector.connect(
            host='localhost',
            port='3306',
            user='root',
            password='password'
        )
        print('链接成功')
        cursor = con.cursor()
        database = 'helloword'
        sql = 'drop database ' + database + ';'
        cursor.execute(sql)
        print('删除逻辑库成功')
        con.close()
    except:
        if 'con' in dir():
            print('创建失败')
        else:
            print('链接失败')

3.重命名逻辑库

def renamedatabase():
    database = 'helloword'
    newdatabase = 'newhelloword'

    # 先转储原有逻辑库
    os.system('mysqldump -h localhost -P 3306 -u root -ppassword '+database+' > ./'+newdatabase+'-data.sql')

    # 创建新的逻辑库
    try:
        con = mysql.connector.connect(
            host='localhost',
            port='3306',
            user='root',
            password='password'
        )
        print('链接成功')
        cursor = con.cursor()
        sql = 'create database '+newdatabase+';'
        cursor.execute(sql)
        print('创建逻辑库成功')
        con.close()
    except:
        if 'con' in dir():
            print('创建失败')
        else:
            print('链接失败')

    # 导入转储的逻辑库
    os.system('mysql -h localhost -P 3306 -u root -ppassword '+newdatabase+' < ./'+newdatabase+'-data.sql')

    # 删除旧的逻辑局
    try:
        con = mysql.connector.connect(
            host='localhost',
            port='3306',
            user='root',
            password='password'
        )
        print('链接成功')
        cursor = con.cursor()
        sql = 'drop database ' + database + ';'
        cursor.execute(sql)
        print('删除逻辑库成功')
        con.close()
    except:
        if 'con' in dir():
            print('创建失败')
        else:
            print('链接失败')
    
    # 删除转储文件
    os.remove('./'+newdatabase+'-data.sql')

4.查询逻辑库

def showdatabase():
    try:
        con = mysql.connector.connect(
            host='localhost',
            port='3306',
            user='root',
            password='password'
        )
        print('链接成功')
        cursor = con.cursor()
        sql = 'show databases;'
        cursor.execute(sql)
        databases = cursor.fetchall()
        for eachdatabases in databases:
            print(eachdatabases[0])
        print('查看逻辑库成功')
        con.close()
    except:
        if 'con' in dir():
            print('创建失败')
        else:
            print('链接失败')

数据表操作

0.基础内容

数值数据类型

数据类型 大小 说明
TINYINT 1字节 字节整数
SMALLINT 2字节 小整数
MEDIUMINT 3字节 中整数
INT 4字节 整数
BIGINT 8字节 长整数
FLOAT 4字节 单精度浮点数
DOUBLE 8字节 双精度浮点数
DECIMAL M+2字节 DECIMAL(M, D) 可变数值类型

字符串数据类型

数据类型 大小 说明
CHAR 1-255 固定长度
VARCHAR 1-65535 不固定长度
TEXT 1-65535 可变长度
MEDIUMTEXT 1-1.6千万 可变长度
LONGTEXT 1-42亿 可变长度

日期数据类型

数据类型 大小 说明
DATE 3字节 日期
TIME 3字节 时间
YEAR 1字节
DATETIME 8字节 日期时间
TIMESTAMP 4字节 时间戳

字段约束

约束类型 关键字 说明
主键约束 PRIMARY KEY 字段唯一,且不能为NULL,只能一个字段使用
非空约束 NOT NULL 字段值不能为 NULL
唯一约束 UNIQUE 字段唯一,且可以为NULL
外键约束 FOREING KEY 与其他数据表关联

日期格式化类型

占位符 说明
%a 缩写星期名
%b 缩写月名
%c 月,数值
%D 带有英文前缀的月中的天
%d 月的天,数值(00-31)
%e 月的天,数值(0-31)
%f 微秒
%H 小时 (00-23)
%h 小时 (01-12)
%I 小时 (01-12)
%i 分钟,数值(00-59)
%j 年的天 (001-366)
%k 小时 (0-23)
%l 小时 (1-12)
%M 月名
%m 月,数值(00-12)
%p AM 或 PM
%r 时间,12-小时(hh:mm:ss AM 或 PM)
%S 秒(00-59)
%s 秒(00-59)
%T 时间, 24-小时 (hh:mm:ss)
%U 周 (00-53) 星期日是一周的第一天
%u 周 (00-53) 星期一是一周的第一天
%V 周 (01-53) 星期日是一周的第一天,与 %X 使用
%v 周 (01-53) 星期一是一周的第一天,与 %x 使用
%W 星期名
%w 周的天 (0=星期日, 6=星期六)
%X 年,其中的星期日是周的第一天,4 位,与 %V 使用
%x 年,其中的星期一是周的第一天,4 位,与 %v 使用
%Y 年,4 位
%y 年,2 位

日期偏移类型

类型 说明
MICROSECOND
SECOND
MINUTE
HOUR
DAY
WEEK
MONTH
QUARTER
YEAR
SECOND_MICROSECOND
MINUTE_MICROSECOND
MINUTE_SECOND
HOUR_MICROSECOND
HOUR_SECOND
HOUR_MINUTE
DAY_MICROSECOND
DAY_SECOND
DAY_MINUTE
DAY_HOUR
YEAR_MONTH

1.创建数据表

def settable():
    try:
        config = {
   
            'host': 'localhost',
            'port': '3306',
            'user': 'root',
            'password': 'password',
            'database': 'helloword'
        }
        tablename = 'helloword'
        # 创建连接池
        pool = mysql.connector.pooling.MySQLConnectionPool(**config, pool_size=4)
        print('链接成功')
        # 获取空闲链接
        con = pool.get_connection()
        # 开启事务
        con.start_transaction()
        cursor = con.cursor()
        sql = 'create table ' + tablename
        sql += """
                (
                    id int unsigned primary key,
                    name varchar(20) not null
                );
            """
        cursor.execute(sql)
        # 提交事务
        con.commit()
        print('数据表创建成功')
    except:
        if 'con' in dir():
            # 回滚事务
            con.rollback()
            print('操作回滚')
        else:
            print('链接失败')
    finally:
        if 'con' in dir(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值