zoukankan      html  css  js  c++  java
  • Python数据库编程pymysql

    ython数据库编程pymysql

    一、数据库编程介绍

    数据库编程就是针对数据库的操作,通过编写程序的方式,让程序做为数据库的客户端进行数据库操作。

    对于MySQL的操作我们可以通过SQL语句,但是有很多情况下我们需要写入MySQL的数据非常多,并且是在其他平台获取数据的同时写入MySQL,需要边获取边写入,这种情况是不适合使用SQL语句的。

    有些情况是我们需要读取MySQL中的数据,来给代码使用,这个时候我们需要将数据直接读到代码中,也不适合使用SQL语句。

    Python提供了一个数据库编程的库pymysql,通过pymysql,我们可以通过代码来对数据库进行增、删、改、查操作,而不需要使用SQL语句,并且可以从其他平台获取数据的同时将数据写到数据库中,也可以读取数据后立即给代码使用。

    本文就介绍pymysql对MySQL数据库的增、删、改、查操作方法。

    二、准备事项

    要对数据库进行操作,我们需要先准备好数据库,数据表以及连接数据库的用户。

    我们先用通过root用户登录MySQL。

    mysql -u root -p
    

      

    1.创建数据库

    pymysql_demo create database pymysql_demo charset utf8; 
    

      

    2.使用数据库pymysql_demo

    use pymysql_demo; 
    

      

    3.创建表test_table

    create table test_table(id int unsigned primary key auto_increment not null,create_time TIMESTAMP not null DEFAULT CURRENT_TIMESTAMP,test_data LONGTEXT not null); 
    

      

    4.创建数据库用户pymysql

    # 用户名 pymysql, 密码 mysql 只能对pymysql_demo数据库进行操作,可以进行所有操作 
    grant all privileges on pymysql_demo.* to 'pymysql'@'localhost' identified by 'mysql';
    

      

    三、数据插入操作

    在Python中操作数据库,不管是增删改查,都要经过五个步骤,分别是连接数据库,获取游标,数据库操作,关闭游标,关闭数据库连接。

    from pymysql import connect
     
     
    def insert_data():
        """
        在mysql中新增一条数据
        """
        # 1.创建连接
        conn = connect(
            host="localhost",
            port=3306,
            user="pymysql",
            password="mysql",
            database="pymysql_demo",
            charset="utf8"
        )
        # 2.创建游标
        cursor = conn.cursor()
        # 3.执行语句
        sql = '''insert into test_table values(0, now(), 'Hello MySQL!');'''
        try:
            cursor.execute(sql)
            conn.commit()
        except Exception as e:
            print(e)
        # 4.关闭游标
        cursor.close()
        # 5.关闭连接
        conn.close()
     
     
    insert_data()
    

      

    运行以上代码后,就会在数据库中插入数据“Hello MySQL!”。

    如果我们需要插入更复杂的数据,将上面sql字符串修改一下就可以了。

    如果我们需要插入更多的数据,将插入函数放在循环语句中多次执行就可以了。

    四、数据查询操作

    def select_data():
        """
        从mysql中查询数据
        """
        conn = connect(
            host="localhost",
            port=3306,
            user="pymysql",
            password="mysql",
            database="pymysql_demo",
            charset="utf8"
        )
        cursor = conn.cursor()
        row_one = None
        sql = '''select * from test_table;'''
        try:
            cursor.execute(sql)
            row_one = cursor.fetchone()
        except Exception as e:
            print(e)
        cursor.close()
        conn.close()
        print(row_one)
     
     
    select_data()
    

      

    运行结果:

    (1, datetime.datetime(2019, 5, 19, 19, 11, 11), 'Hello MySQL!')
    

      

    查询操作其实跟插入操作的步骤是一样的,只是连接数据库之后执行的是查询语句。

    要进行更复杂的查询,只要将sql字符串换成您需要的SQL语句就行了。

    其中的fetchone()是获取查询集中的一条数据,返回结果是一个元组。还有fetchmany()和fetchall()两个方法,fetchmany()可以接收一个整数参数,返回整数条数据,结果是一个嵌套的元组。fetchall()返回查询到的所有数据,返回结果也是一个嵌套的元组。

    五、数据删除操作

    def delete_data():
        """
        从mysql中删除数据
        """
        conn = connect(
            host="localhost",
            port=3306,
            user="pymysql",
            password="mysql",
            database="pymysql_demo",
            charset="utf8"
        )
        cursor = conn.cursor()
        sql = '''delete from test_table;'''
        try:
            cursor.execute(sql)
            conn.commit()
        except Exception as e:
            print(e)
        cursor.close()
        conn.close()
     
     
    delete_data()
    

      

    执行上面的代码后,数据表中的所有数据都会被删除。

    在实际使用中,基本不会删除表中所有的数据,所以使用时把sql字符串换成自己需要的修改或者删除语句就行了。


    原文:https://blog.csdn.net/weixin_43790276/article/details/90345306

  • 相关阅读:
    一个项目多个App项目搭建
    mac 配置sencha touch环境
    mac 配置pylucene
    django博客开发
    xampp添加 django支持
    mac安装apache的mod_wsgi模块
    修改xampp默认sql密码
    xampp 安装 mysql-python
    ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock'
    MySQL问题解决:-bash:mysql:command not found
  • 原文地址:https://www.cnblogs.com/qbdj/p/11004879.html
Copyright © 2011-2022 走看看