• (六)6-1Mysql操作数据


    安装需要软件和包
    1、Mysql官网下载对应系统安装包https://dev.mysql.com/downloads/mysql/
    2、MySQLdb 是用于Python链接Mysql数据库的接口,它实现了 Python 数据库 API 规范 V2.0,基于 MySQL C API 上建立的。
    如果是windows系统:登录https://pypi.python.org/pypi/MySQL-python/1.2.5找到.exe结尾的包,下载安装就好了。安装之前最好检查自己的Python版本,上面网站提供的是MySQL-python-1.2.5.win32-py2.7.exe ,在64位python下报错。
    在网上搜索MySQL-python-1.2.3.win-amd64-py2.7.exe安装即可。
    下载地址:http://download.csdn.net/download/jing_best/7867081
    在Window运行输入”cmd“-->"ipython" 在命令提示符输入import MySQLdb
    无没有安装模块MySQLdb系统报错:

    没有任何错误信息,则模块正常

    数据库连接
    MySQLdb提供了connect方法用来和数据库建立连接,接收数个参数,返回连接对象
    MySQLdb提供了connect方法用来和数据库建立连接,接收数个参数,返回连接对象
    例如:

    #coding:utf8
    import  MySQLdb
    #连接数据库
    #host       数据库ip
    #port       数据库监听端口
    #user       数据库用户
    #passwd     用户密码
    #db         数据库名称
    #charset    字符集   utf-8
    # conn = MySQLdb.connect(host="",port="",user="",passwd="",db="",charset="")
    def connect_mysql():
        db_config = {
            "host":"127.0.0.1",
            "port":3306,
            "user":"root",
            "passwd":"123456",
            "db":"world",
            "charset":"utf8",
        }
        try:
            cnx = MySQLdb.connect(**db_config)
        except Exception as e :
            raise e
        return  cnx
    con = connect_mysql()
    print(con)

    运行结果:

    <_mysql.connection open to '127.0.0.1' at 2616b28>

    mysql事务
    mysql事务
    MySQL 事务主要用于处理操作量大,复杂度高的数据。比如,你操作一个数据库,公司的一个员工离职了,你要在数据库中删除他的资料,也要删除该人员相关的,比如邮箱,个人资产等。这些数据库操作语言就构成了一个事务。
    在MySQL中只有使用了Innodb数据库引擎的数据库或表才支持事务,所以很多情况下我们都使用innodb引擎。
    事务处理可以用来维护数据库的完整性,保证成批的SQL语句要么全部执行,要么全部不执行。
    一般来说,事务是必须满足4个条件(ACID): Atomicity(原子性)、Consistency(稳定性)、Isolation(隔离性)、Durability(可靠性)
    1、事务的原子性:一组事务,要么成功;要么撤回。
    2、稳定性 : 有非法数据(外键约束之类),事务撤回。
    3、隔离性:事务独立运行。一个事务处理后的结果,影响了其他事务,那么其他事务会撤回。事务的100%隔离,需要牺牲速度。
    4、可靠性:软、硬件崩溃后,InnoDB数据表驱动会利用日志文件重构修改。可靠性和高速度不可兼得, innodb_flush_log_at_trx_commit选项 决定什么时候吧事务保存到日志里。
    而mysql在默认的情况下,他是把每个select,insert,update,delete等做为一个事务的,登录mysql服务器,进入mysql,执行以下命令:
    mysql> show variables like 'auto%';
    +--------------------------+-------+
    | Variable_name | Value |
    +--------------------------+-------+
    | auto_increment_increment | 1 |
    | auto_increment_offset | 1 |
    | autocommit | ON |
    | automatic_sp_privileges | ON |
    +--------------------------+-------+
    4 rows in set (0.00 sec)
    如上所示: 有一个参数autocommit就是自动提交的意思,每执行一个msyql的select,insert,update等操作,就会进行自动提交。
    如果把改选项关闭,我们就可以每次执行完一次代码就需要进行手动提交,connect对象给我们提供了两种办法来操作提交数据。
    d)mysql事务的方法
    commit():提交当前事务,如果是支持事务的数据库执行增删改后没有commit则数据库默认回滚,白操作了
    rollback():取消当前事务

    mysql操作数据

    import MySQLdb
    def connect_mysql():
        db_config = {
            "host":"127.0.0.1",
            "port":3306,
            "user":"root",
            "passwd":"123456",
            "db":"world",
            "charset":"utf8",
        }
        try:
            cnx = MySQLdb.connect(**db_config)
        except Exception as e :
            raise e
        return  cnx
    
    
    if __name__ == "__main__":
        # sql = "create table test(id int not null) ;insert into test(id) values(1000);"
        sql = "insert into test(id) values(1001);"
        cnx = connect_mysql()
        # print(dir(cnx))
        cus = cnx.cursor()
        try :
            cus.execute(sql)
            cus.close()
            cnx.commit()
        except Exception as e :
            raise e
            cnx.rollback()
        finally:
            cnx.close()

    运行结果:

  • 相关阅读:
    安装SQLserver2008时出现的错误
    第二章 语法陷阱
    分享:APK高级保护方法解析(三)
    设计模式_命令模式
    POJ-3134-Power Calculus(迭代加深DFS)
    Rational Rose2007具体安装步骤
    webAPP开发的问题(总结)
    基于Linux的智能家居的设计(5)
    获取表数据的插入SQL
    POJ 3667 Hotel(线段树)
  • 原文地址:https://www.cnblogs.com/pythonlx/p/7868672.html
Copyright © 2020-2023  润新知