zoukankan      html  css  js  c++  java
  • python -- 连接mysql数据库

    由于python2.x与3.x的不兼容性,导致在python3中,不能使用类似在2.x中常用的模块mysqldb来连接mysql数据库。

    在python3.x中, 连接MySQL的方案有:oursql, PyMySQL, myconnpy 等。

    我常用的是pymysql。

    1、pymysql安装:

      一般推荐直接用pip3包管理器安装

    pip3 install pymysql
    

      还可以有其他安装方法,百度。

    2、pymysql引用:

      跟其他模块一样,在安装好pymysql之后,在需要的py文件里面导入pymysql,然后就能使用pymysql进行mysql数据库连接操作。

    import pymysql  

    3、pymysql应用:

     1 #!/usr/bin/env python
     2 # -*- coding: utf-8 -*-
     3 
     4 import pymysql
     5 
     6 #连接mysql
     7 conn = pymysql.connect(
     8     host='127.0.0.1',
     9     port=3306,
    10     user='root',
    11     passwd='root',
    12     db='pystudy',
    13     charset='utf8'
    14 )
    15 
    16 #使用cursor方法创建一个游标对象 cur
    17 cur = conn.cursor()
    18 
    19 #使用excute方法执行SQL语句,并返回受影响的行数
    20 # reCount = cur.execute('select * from students')
    21 
    22 #使用executemany方法执行多条insert语句
    23 li = [
    24     ('txowner','male',23,13281818181,'CN'),
    25     ('xtsec','male',25,132834321,'USA'),
    26     ('tom','male',28,1328153431,'JP'),
    27     ('gouzi','female',22,132345181,'CN'),
    28 ]
    29 reCount1 = cur.executemany('insert into students(name,sex,age,tel,nal) values(%s,%s,%s,%s,%s)',li)
    30 
    31 #删除数据
    32 # reCount = cur.execute('delete from students where age = 28')
    33 
    34 #修改数据
    35 # reCount = cur.execute('update students set sex = %s where name = %s',('female','admin'))
    36     #注意:这里用%s占位,后面写参数时不需要用%
    37 
    38 #事物回滚操作(事物回滚操作只有在提交事务之前才有效,一旦事物提交,就不能进行回滚了)
    39 conn.rollback()  #只有在ENGINE=InnoDB时有用,MyISAM不支持事物,所以不能进行回滚
    40 
    41 #提交当前事物到数据库执行
    42 conn.commit()
    43 
    44 #使用cursor对象的fetchall方法获取全部数据
    45 # data = cur.fetchall()
    46 # data = cur.fetchone()
    47 # data = cur.fetchmany(3)
    48 
    49 # print(data)
    50 
    51 #关闭连接
    52 cur.close()
    53 conn.close()

    4、pymysql模块说明:

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    '''
    pymysql模块作用:python连接mysql
    
    简单用法:
    pymysql.Connect()参数说明
    host(str):      MySQL服务器地址
    port(int):      MySQL服务器端口号(默认3306可不写)
    user(str):      用户名
    passwd(str):    密码
    db(str):        数据库名称
    charset(str):   连接编码(默认可不写)
    
    connection对象支持的方法
    cursor()        使用该连接创建并返回游标
    commit()        提交当前事务
    rollback()      回滚当前事务(mysql使用事务前需确定存储引擎为innodb,MyISAM是不能进行回滚的)
    close()         关闭连接
    
    cursor对象支持的方法
    execute(op)     执行一个数据库的操作命令
    executemany()   执行多个数据库的操作命令
    fetchone()      取得结果集的下一行
    fetchmany(size) 获取结果集的下几行(以元组形式返回)
    fetchall()      获取结果集中的所有行(以元组形式返回)
    rowcount()      返回数据条数或影响行数
    close()         关闭游标对象
    '''

     5、事物回滚

     1 #!/usr/bin/env python
     2 # -*- coding: utf-8 -*-
     3 
     4 import pymysql
     5 
     6 #连接mysql
     7 conn = pymysql.connect(
     8     host='127.0.0.1',
     9     port=3306,
    10     user='root',
    11     passwd='root',
    12     db='pystudy',
    13     charset='utf8'
    14 )
    15 
    16 #使用cursor方法创建一个游标对象 cur
    17 cur = conn.cursor()
    18 
    19 try:
    20     li = [
    21         ('txowner','male',23,13281818181,'CN'),
    22         ('xtsec','male',25,132834321,'USA'),
    23         ('tom','male',28,1328153431,'JP'),
    24         ('gouzi','female',22,132345181,'CN'),
    25     ]
    26     reCount1 = cur.executemany('insert into students(name,sex,age,tel,nal) values(%s,%s,%s,%s,%s)',li)
    27     assert 1==2
    28 
    29 except Exception as e:
    30     conn.rollback()
    31 
    32 else:
    33     conn.commit()
    34 
    35 #关闭连接
    36 cur.close()
    37 conn.close()
  • 相关阅读:
    Linux学习笔记(二):实战-根据微服务端口号关闭进程
    Linux学习笔记(一):文件操作命令
    算法-Java组合
    Springboot学习笔记(六)-配置化注入
    Springboot学习笔记(五)-条件化注入
    Springboot学习笔记(四)-配置相关
    Springboot学习笔记(三)-常用注入组件方式
    CentOS7安装MySQL
    扫二维码下载apk并统计被扫描次数(及微信屏蔽下载解决方案)
    Java jacob调用打印机打印word文档
  • 原文地址:https://www.cnblogs.com/xtsec/p/6985612.html
Copyright © 2011-2022 走看看