zoukankan      html  css  js  c++  java
  • python操作mysql

    Python DB-API

    Python的DB-API,为大多数的数据库实现了接口,使用它连接各数据库后,就可以用相同 的方式操作各数据库。
    使用流程:
    1.引入API模块。
    2.获取与数据库的连接。
    3.执行SQL语句和存储过程。
    4.关闭数据库连接。

    python操作mysql的模块安装

    Python2
    安装MySQLdb模块,不支持pip安装,可以通过网站下载安装:https://pypi.org/project/MySQL-python/1.2.5/
    安装依赖包:

    yum install –y python-devel mysql-devel gcc

    Python3
    不支持MySQLdb了,可以安装pymysql模块,使用pip install pymysql进行安装即可。

    MySQL的事务

    一般来说,事务是必须满足4个条件(ACID): Atomicity(原子性)、Consistency(稳定性)、Isolation(隔离性)、Durability(可靠性)
    1、事务的原子性:一组事务,要么成功;要么撤回。
    2、稳定性 : 有非法数据(外键约束之类),事务撤回。
    3、隔离性:事务独立运行。一个事务处理后的结果,影响了其他事务,那么其他事务会撤回。事务的100%隔离,需要牺牲速度。
    4、可靠性:软、硬件崩溃后,InnoDB数据表驱动会利用日志文件重构修改。可靠性和高速度不可兼得, innodb_flush_log_at_trx_commit选项 决定什么时候把事务保存到日志里Mysql的事务。

    MariaDB [(none)]> show variables like "%auto%";
    +-----------------------------+-------+
    | Variable_name               | Value |
    +-----------------------------+-------+
    | auto_increment_increment    | 1     |
    | auto_increment_offset       | 1     |
    | autocommit                  | ON    |
    | automatic_sp_privileges     | ON    |
    | innodb_autoextend_increment | 8     |
    | innodb_autoinc_lock_mode    | 1     |
    | innodb_stats_auto_update    | 1     |
    | sql_auto_is_null            | OFF   |
    +-----------------------------+-------+

    我们可以看到autocommit是开启状态,即我们在执行sql语句之后,mysql会为我们自动提交,如果想要手动提交,可以set autocommit = 0,这样只是临时生效,要永久生效的话,需要更改配置文件。

    MySQL的常用操作

    授权超级用户:grant all privileges on *.* to 'tangnanbing'@'%' identified by '1qa z@W SX' with grant option;
    查看库:show databases;
    查看都有哪些库 show databases;
    查看某个库的表 use db; show tables G ;
    查看表的字段desc tb;
    查看建表语句 show create table tb;
    当前是哪个用户select user() ;
    当前库 select database() ;
    创建库 create database db1;
    创建表 create table t1 (id int, name char(40 ) address varchar (30 ));

    MySQL的连接

    1.创建数据库
    create database python;
    2. 授权用户
    grant all privileges on *.* to 'yangjian'@'%' identified by '123456' with grant option;
    flush privilege;
    3. 建立连接
    conn=MySQLdb.connect(host=  "196.186.176.210",user=  "yangjian",passwd="123456   ",db=  "test")

    比较常用的参数包括:
    host:数据库主机名.默认 是用本地主机
    user:数据库登陆名.默认是当前用户
    passwd:数据库 登陆 的秘密.默认为空
    db:要使用的数据库名.没有默认值
    port:MySQL服务使用的TCP端口.默认是3306,数字类型
    charset:数据库编码Mysql的连接

    下面实际操作一下:

    import pymysql
    
    # 建立连接
    conn = pymysql.connect(host = "196.186.176.210", port = 3306, user = "yangjian", passwd = "123456", db = "test")
    
    # 创建游标
    cursor = conn.cursor()
    
    # sql语句
    sql = "select version()"
    
    # 执行sql语句
    cursor.execute(sql)
    
    # 取回结果
    result = cursor.fetchone()
    print("Database version: %s " % result)
    
    # 关闭游标
    cursor.close()
    
    # 关闭连接
    conn.close()
    
    结果:
    Database version: 5.5.56-MariaDB 

    我们可以把上面的代码写成一个类

    import pymysql
    
    class TestMysql(object):
        def __init__(self):
            self.dbConfig = {
                "host": "196.186.176.210",
                "port": 3306,
                "user": "yangjian",
                "passwd": "123456",
                "db": "test"
            }
            
            # 建立连接
            conn = pymysql.connect(**self.dbConfig)
            self.a = conn
    
        def select(self):
            sql = "select * from memory limit 2"
            cursor = self.a.cursor()
            cursor.execute(sql)
            
            # fetchall 取回所有结果    fetchone取回一条结果
            result = cursor.fetchall()
            print(result)
    
        def update(self):
            pass
    
    if __name__ == '__main__':
        
        # 实例化类
        conn = TestMysql()
        
        # 调用类方法
        conn.select()
        
    结果:
    ((303, 1523236486), (303, 1523236487))
  • 相关阅读:
    Win10新建文件不自动刷新
    解决 Win10 系统新建文件夹后需手动刷新才能显示
    新建的文件需要刷新才能看见怎么办?
    win7、win10系统电脑开机后小键盘灯不亮怎么办?
    VMware Workstation 将虚拟机挂起后,电脑会很卡,SCSI转换成IDE就可以了
    如何把VMware Workstation使用的虚拟SCSI磁盘转换成虚拟IDE硬盘
    bat批处理文件怎么将路径添加到path环境变量中
    在Windows下使用svn命令行教程及svn命令行的解释
    php正确解码javascript中通过escape编码后的字符
    采集/自动登录啊都可以用这两个方法实现 asp.net
  • 原文地址:https://www.cnblogs.com/yangjian319/p/8997399.html
Copyright © 2011-2022 走看看