Python3快速入门(十一)——Python3数据库操作

Python3快速入门(十一)——Python3数据库操作

一、mysql-connector 驱动

1、mysql-connector?简介

mysql-connector?是?MySQL?官方提供的驱动器。
使用pipenv进行包管理,安装命令如下:
pipenv install mysql-connector

2、mysql-connector常用接口

mysql.connector.connect(*args, **kwargs)
创建一个数据库连接,返回MySQLConnectionAbstract实例。connect接收可变参数和关键字可变参数,通常接收可变参数时使用可变参数指定默认参数,接收关键字可变参数时使用字典类型参数。常用关键字如下:
‘host‘: ‘127.0.0.1‘,
‘user‘: ‘root‘,
‘password‘: ‘root‘,
‘port‘: 3306,
‘database‘: ‘test‘,
‘charset‘: ‘utf8‘

import mysql.connector

MYSQL_CONFIG = {
    "host":"47.110.45.34",
    "port":"3306",
    "user":"root",
    "passwd":"xxxxxx"
}

if __name__ == ‘__main__‘:
    mysql_db = mysql.connector.connect(**MYSQL_CONFIG)
    print(mysql_db)

MySQLConnectionAbstract常用接口如下
mysql.connector.close()
断开到MySQL服务器的连接
mysql.connector.disconnect()
断开到MySQL服务器的连接
mysql.connector.reconnect(attempts=1, delay=0)
重新建立到MySQL服务器的连接
mysql.connector.ping(reconnect=False, attempts=1, delay=0)
检查MySQL服务器的可用性
mysql.connector.commit()
提交当前事务
mysql.connector.rollback()
回滚当前事务
mysql.connector.start_transaction(consistent_snapshot=False,
isolation_level=None, readonly=None)
启动事务
mysql.connector.cursor(buffered=None,raw=None,prepared=None, cursor_class=None,dictionary=None, named_tuple=None)
创建一个游标
MySQLCursorAbstract常用接口如下:
MySQLCursorAbstract.close()
关闭游标
MySQLCursorAbstract.execute(operation,params=(),multi=False)
执行SQL操作
MySQLCursorAbstract.executemany(operation, seqparams)
执行SQL操作多次
MySQLCursorAbstract.fetchone()
返回查询结果集的下一行,返回一个tuple或None。
MySQLCursorAbstract.fetchmany(size=1)
返回查询结果集的后续size行,返回一个tuple的链表或空链表。
MySQLCursorAbstract.fetchall()
返回查询结果集的所有行,返回一个tuple的链表
MySQLCursorAbstract.reset(self, free=True):
重置游标到默认状态

3、mysql-connector数据库编程

# -*- coding:utf-8 -*-
import mysql.connector

if __name__ == ‘__main__‘:
    mysql_db = mysql.connector.connect(
        host="47.110.45.34",
        port="3306",
        user="root",
        passwd="[email protected]")
    mysql_cursor = mysql_db.cursor()
    try:
        # 创建数据库
        mysql_cursor.execute("CREATE DATABASE sites;")
        # 使用数据库
        mysql_cursor.execute("USE sites;")
        # 创建数据库表
        mysql_cursor.execute("CREATE TABLE website (name VARCHAR(255), url VARCHAR(255));")
        # 创建主键
        mysql_cursor.execute("ALTER TABLE website ADD COLUMN id INT AUTO_INCREMENT PRIMARY KEY;")
        # 插入数据
        sql = "INSERT INTO website (name, url) VALUES (%s, %s);"
        value = ("BaiDu", "https://www.baidu.com")
        mysql_cursor.execute(sql, value)
        mysql_db.commit()
    except:
        mysql_db.rollback()
    # 批量插入数据
    sql = "INSERT INTO website (name, url) VALUES (%s, %s);"
    value = [
        (‘Google‘, ‘https://www.google.com‘),
        (‘Github‘, ‘https://www.github.com‘),
        (‘TaoBao‘, ‘https://www.taobao.com‘),
        (‘HuaWei‘, ‘https://www.huawei.com‘)
    ]
    try:
        mysql_cursor.executemany(sql, value)
        # 更新记录
        sql = "UPDATE website SET name = ‘GitHub‘ WHERE name = ‘Github‘"
        mysql_cursor.execute(sql)
        mysql_db.commit()
    except:
        mysql_db.rollback()
    # 查询记录
    try:
        mysql_cursor.execute("SELECT * FROM website;")
        result = mysql_cursor.fetchall()  # fetchall() 获取所有记录
        for x in result:
            print(x)
        # 删除记录
        mysql_cursor.execute("DELETE FROM website WHERE name=‘Google‘;")
        # 删除数据库
        mysql_cursor.execute("DROP DATABASE sites;")
        mysql_db.commit()
    except:
        # 回滚
        mysql_db.rollback()
    # 关闭数据库连接
    mysql_db.close()

二、PyMySQL驱动

1、PyMySQL简介

PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用mysqldb。
PyMySQL 遵循 Python 数据库 API v2.0 规范,并包含了 pure-Python MySQL 客户端库。
使用pipenv进行包管理,安装命令如下:
pipenv install pymysql

2、PyMySQL常用接口

pymysql.Connect(*args, **kwargs)
连接到MySQL数据库,建立一个socket连接并返回Connection对象。Connection接收的关键字参数如下:
Connection(host=None, user=None, password="",
database=None, port=0, unix_socket=None,
charset=‘‘, sql_mode=None,
read_default_file=None, conv=None, use_unicode=None,
client_flag=0, cursorclass=Cursor, init_command=None,
connect_timeout=10, ssl=None, read_default_group=None,
compress=None, named_pipe=None,
autocommit=False, db=None, passwd=None, local_infile=False,
max_allowed_packet=1610241024, defer_connect=False,
auth_plugin_map=None, read_timeout=None, write_timeout=None,
bind_address=None, binary_prefix=False, program_name=None,
server_public_key=None)
Connection常用接口如下:
Connection.close()
发送退出消息,关闭到MySQL数据库的socket连接
Connection.begin()
开启事务
Connection.commit()
提交变化到稳定存储
Connection.rollback()
回滚当前事务
Connection.select_db(self, db):
设置当前数据库,db为数据库名称
Connection.cursor(self, cursor=None)
创建一个用于SQL操作的游标
Cursor常用接口如下:
Cursor.close()
关闭游标
Cursor.execute(query, args=None)
执行SQL查询操作,返回受影响的行的数量
Cursor.executemany(query, args)
批量执行SQL查询操作,返回受影响的行的数量
Cursor.fetchone()
Fetch下一行
Cursor.fetchmany(size=None)
Fetch多行
Cursor.fetchall()
Fetch所有的行

3、PyMySQL数据库编程

import pymysql

if __name__ == ‘__main__‘:
    mysql_db = pymysql.Connect(
        host="47.110.45.34",
        port=3306,
        user=‘root‘,
        password=‘[email protected]‘)
    mysql_cursor = mysql_db.cursor()
    try:
        # 创建数据库
        mysql_cursor.execute("CREATE DATABASE sites;")
        # 使用数据库
        mysql_cursor.execute("USE sites;")
        # 创建数据库表
        mysql_cursor.execute("CREATE TABLE website (name VARCHAR(255), url VARCHAR(255));")
        # 创建主键
        mysql_cursor.execute("ALTER TABLE website ADD COLUMN id INT AUTO_INCREMENT PRIMARY KEY;")
        # 插入数据
        sql = "INSERT INTO website (name, url) VALUES (%s, %s);"
        value = ("BaiDu", "https://www.baidu.com")
        mysql_cursor.execute(sql, value)
        mysql_db.commit()
    except:
        mysql_db.rollback()
    # 批量插入数据
    sql = "INSERT INTO website (name, url) VALUES (%s, %s);"
    value = [
        (‘Google‘, ‘https://www.google.com‘),
        (‘Github‘, ‘https://www.github.com‘),
        (‘TaoBao‘, ‘https://www.taobao.com‘),
        (‘HuaWei‘, ‘https://www.huawei.com‘)
    ]
    try:
        mysql_cursor.executemany(sql, value)
        # 更新记录
        sql = "UPDATE website SET name = ‘GitHub‘ WHERE name = ‘Github‘"
        mysql_cursor.execute(sql)
        mysql_db.commit()
    except:
        mysql_db.rollback()
    # 查询记录
    try:
        mysql_cursor.execute("SELECT * FROM website;")
        result = mysql_cursor.fetchall()  # fetchall() 获取所有记录
        for x in result:
            print(x)
        # 删除记录
        mysql_cursor.execute("DELETE FROM website WHERE name=‘Google‘;")
        # 删除数据库
        mysql_cursor.execute("DROP DATABASE sites;")
        mysql_db.commit()
    except:
        # 回滚
        mysql_db.rollback()
    # 关闭数据库连接
    mysql_db.close()

原文地址:https://blog.51cto.com/9291927/2419807

时间: 2024-11-05 06:03:41

Python3快速入门(十一)——Python3数据库操作的相关文章

Python3快速入门(六)——Python3面向对象

Python3快速入门(六)--Python3面向对象 一.面向对象技术简介 1.面向对象简介 面向对象编程(Object Oriented Programing,OOP)是一种编程思想,OOP把对象当成程序的一个基本单元,一个对象包含数据和操作数据的方法.面向对象编程的三大特性如下:A.封装,可以隐藏实现细节,使代码模块化.B.继承,可以通过扩展已存在的类来实现代码重用,避免重复编写相同的代码.C.多态,封装和继承的目的都是为了实现代码重用, 而多态是为了实现接口重用,使得类在继承和派生的时候

Python3快速入门(九)——Python3并发编程

Python3快速入门(九)--Python3并发编程 一.Python线程模块 1.线程简介 一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成.线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程本身不拥有系统资源,与进程内的其它线程共享进程的所有资源.一个进程中至少有一个线程,并作为程序的入口,即主线程,其它线程称为工作线程.???? 多线程,是指从软件或者硬件上实现多个线程并发执行的技术.支持多线程能力的计算机因有硬件支持而能够在同一时间执行多个线程,进而提升

Python3快速入门(一)——Python简介

Python3快速入门(一)--Python简介 一.Python简介 1.Python简介 Python是一种解释型.面向对象.动态数据类型的高级程序设计语言,由荷兰Guido van Rossum于1989年底发明,第一个公开发行版于1991年发布,Python源代码遵循 GPL(GNU General Public License)协议. 2.Python的优点 (1)易于学习Python关键字相对较少,结构简单,语法定义明确,易于学习.(2)易于阅读Python代码定义清晰.(3)易于维

Python3快速入门(七)——Python3正则表达式

Python3快速入门(七)--Python3正则表达式 1.re模块简介 re 模块提供 Perl 风格的正则表达式模式,使 Python 语言拥有全部的正则表达式功能. 2.正则表达式模式 模式字符串使用特殊的语法来表示一个正则表达式:正则表达式模式中的字母和数字匹配同样的字符串:多数字母和数字前加一个反斜杠时会有不同的含义:标点符号通常有特殊的含义,只有被转义时才匹配自身:反斜杠本身需要使用反斜杠转义.^匹配字符串的开头$匹配字符串的末尾.匹配任意字符,除了换行符,当re.DOTALL标记

Python3快速入门(十)——Python3网络编程

Python3快速入门(十)--Python3网络编程 一.socket模块简介 Python 提供了两个级别访问的网络服务,低级别的网络服务支持基本的 Socket,提供了标准的BSD Sockets API,可以访问底层操作系统Socket接口的全部方法:高级别的网络服务模块 SocketServer, 提供了服务器中心类,可以简化网络服务器的开发.socket不支持多并发,socketserver是对socket的再封装,简化网络服务器版的开发. 二.socket模块接口 1.socket

Python3快速入门(十二)——NumPy

Python3快速入门(十二)--NumPy 一.NumPy简介 1.NumPy简介 NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,同时对数组运算提供了大量的数学函数库.Numpy 是一个运行速度非常快的数学库,内部解除了CPython的GIL(全局解释器锁),运行效率极好,主要用于数组计算,是大量机器学习框架的基础库,NumPy主要包括如下:(1)强大的N维数组对象 ndarray(2)广播功能函数(3)整合 C/C++/

Python3快速入门(十三)——Pandas数据结构

Python3快速入门(十三)--Pandas数据结构 一.Pandas数据结构简介 Pandas有三种主要数据结构,Series.DataFrame.Panel.Series是带有标签的一维数组,可以保存任何数据类型(整数,字符串,浮点数,Python对象等),轴标签统称为索引(index).DataFrame是带有标签的二维数据结构,具有index(行标签)和columns(列标签).如果传递index或columns,则会用于生成的DataFrame的index或columns.Panel

Python3快速入门(十五)——Pandas数据处理

Python3快速入门(十五)--Pandas数据处理 一.函数应用 1.函数应用简介 如果要将自定义函数或其它库函数应用于Pandas对象,有三种使用方式.pipe()将函数用于表格,apply()将函数用于行或列,applymap()将函数用于元素. 2.表格函数应用 可以通过将函数对象和参数作为pipe函数的参数来执行自定义操作,会对整个DataFrame执行操作. # -*- coding=utf-8 -*- import pandas as pd import numpy as np

Python3快速入门(十六)——Matplotlib绘图

Python3快速入门(十六)--Matplotlib绘图 一.Matplotlib简介 1.Matplotlib简介 Matplotlib是 Python 2D-绘图领域使用最广泛的套件,可以简易地将数据图形化,并且提供多样化的输出格式.matplotlib有两个接口,一个是状态机层的接口,通过pyplot模块来进行管理:一个是面向对象的接口,通过pylab模块将所有的功能函数全部导入其单独的命名空间内. 2.Matplotlib安装 使用conda安装如下:conda install mat