zoukankan      html  css  js  c++  java
  • Python中的MySQLConnector使用介绍

    MySQL Connector/Python 是 MySQL 官方提供的 Python 连接 MySQL 数据库的驱动程序了,很多初学者对于 在python中连接mysql数据库还是有点为难了,下文我们只需要了解这个MySQLConnector模块问题就可以解决了。相较于MySQLdb模块来说,其支持python3,而MySQLdb目前只支持到python2.7版本。这里就结合示例,总结下MySQL Connector模块的用法。

    1、数据库连接

    连接数据库的代码如下

    import mysql.connector
    config={'host':'127.0.0.1',#默认127.0.0.1
            'user':'root',
            'password':'123456',
            'port':3306 ,#默认即为3306
            'database':'test',
            'charset':'utf8'#默认即为utf8
            }
    try:
      cnn=mysql.connector.connect(**config)
    except mysql.connector.Error as e:
      print('connect fails!{}'.format(e))

    连接方法上和MySQLdb模块略有不同。MySQLdb使用的是=号,这里使用的是 : 号。


    2、创建表

    下面我们根据上面新建的一个数据库连接创建一张名为student的表:

    sql_create_table='CREATE TABLE `student` \
    (`id` int(10) NOT NULL AUTO_INCREMENT,\
    `name` varchar(10) DEFAULT NULL,\
    `age` int(3) DEFAULT NULL,\
    PRIMARY KEY (`id`)) \
    ENGINE=MyISAM DEFAULT CHARSET=utf8'
    cursor=cnn.cursor()
    try:
      cursor.execute(sql_create_table)
    except mysql.connector.Error as e:
      print('create table orange fails!{}'.format(e)) 

    3、插入数据

    插入数据的语法上和MySQLdb上基本上是一样的:

    cursor=cnn.cursor()
    try:
      '第一种:直接字符串插入方式'
      sql_insert1="insert into student (name, age) values ('orange', 20)"
      cursor.execute(sql_insert1)
      '第二种:元组连接插入方式'
      sql_insert2="insert into student (name, age) values (%s, %s)"
      #此处的%s为占位符,而不是格式化字符串,所以age用%s
      data=('shiki',25)
      cursor.execute(sql_insert2,data)
      '第三种:字典连接插入方式'
      sql_insert3="insert into student (name, age) values (%(name)s, %(age)s)"
      data={'name':'mumu','age':30}
      cursor.execute(sql_insert3,data)
      #如果数据库引擎为Innodb,执行完成后需执行cnn.commit()进行事务提交
    except mysql.connector.Error as e:
      print('insert datas error!{}'.format(e))
    finally:
      cursor.close()
      cnn.close()
    同样,MySQL Connector也支持多次插入,同样其使用的也是cursor.executemany,示例如下:

    stmt='insert into student (name, age) values (%s,%s)'
    data=[
         ('Lucy',21),
         ('Tom',22),
         ('Lily',21)]
    cursor.executemany(stmt,data)


    4、查询操作

    cursor=cnn.cursor()
    try:
      sql_query='select id,name from student where  age > %s'
      cursor.execute(sql_query,(21,))
      for id,name in cursor:
        print ('%s\'s age is older than 25,and her/his id is %d'%(name,id))
    except mysql.connector.Error as e:
      print('query error!{}'.format(e))
    finally:
      cursor.close()
      cnn.close()

    5、删除操作

    cursor=cnn.cursor()
    try:
      sql_delete='delete from student where name = %(name)s and age < %(age)s'
      data={'name':'orange','age':24}
      cursor.execute(sql_delete,data)
    except mysql.connector.Error as e:
      print('delete error!{}'.format(e))
    finally:
      cursor.close()
      cnn.close()



  • 相关阅读:
    spring boot web开发使用kindeditor中调用地图功能的异常情况"此内容不能显示在一个框架中"
    mysql在spring+mybatis中出现value '0000-00-00 00:00:00' can not be represented as java.sql.Timestamp的几种种解决办法
    spring oauth2 的认证流程
    mingw32 QT环境在集成一些librtmp代码由于zlib出现的一些错误:undefined reference to `inflate'
    QT下c和c++混编问题
    产品与开发那些事
    Qt5.6 windows下vs2015(vs2012)编译ODBC
    转 2018 疯狂微服务之死
    Source Tree时免登录安装
    Win7系统下局域连接OPC配置
  • 原文地址:https://www.cnblogs.com/cxsabc/p/10627710.html
Copyright © 2011-2022 走看看