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()
  • 相关阅读:
    Leetcode 811. Subdomain Visit Count
    Leetcode 70. Climbing Stairs
    Leetcode 509. Fibonacci Number
    Leetcode 771. Jewels and Stones
    Leetcode 217. Contains Duplicate
    MYSQL安装第三步报错
    .net 开发WEB程序
    JDK版本问题
    打开ECLIPSE 报failed to load the jni shared library
    ANSI_NULLS SQL语句
  • 原文地址:https://www.cnblogs.com/xtsec/p/6985612.html
Copyright © 2011-2022 走看看