Python3快速入门(十一)——Pyt

发布时间:2019-09-28 08:38:33编辑:auto阅读(1931)

    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="YangYuLiang@123.com")
        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='YangYuLiang@123.com')
        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()

关键字

上一篇: python3变化

下一篇: mac> python3 安装Djang