zoukankan      html  css  js  c++  java
  • 使用Python操作MySQL数据库

    一、数据库的安装和连接

    1.1 PyMySQL的安装

    pip install pymysql

    1.2 python连接数据库

    import pymysql
    
    db = pymysql.connect("数据库ip","用户","密码","数据库" ) # 打开数据库连接
    cursor.execute("SELECT VERSION()")                    # 使用 execute() 方法执行 SQL 查询
    data = cursor.fetchone()                              # 使用 fetchone() 方法获取单条数据
    print ("Database version : %s " % data)
    db.close()                                            # 关闭数据库连接
    

    1.2.1 更多参数版

    import pymysql
    
    conn = pymysql.connect(
            host='localhost', user='root', password="root",
            database='db', port=3306, charset='utf-8',
    )
    
    cur = conn.cursor(cursor=pymysql.cursors.DictCursor)
    

    二、创建表操作

    import pymysql
    
    # 打开数据库连接
    db = pymysql.connect("localhost", "testuser", "test123", "TESTDB")
    
    # 使用 cursor() 方法创建一个游标对象 cursor
    cursor = db.cursor()
    
    # 使用 execute() 方法执行 SQL,如果表存在则删除
    cursor.execute("DROP TABLE IF EXISTS EMPLOYEE")
    
    # 使用预处理语句创建表
    sql = """CREATE TABLE EMPLOYEE (
             FIRST_NAME  CHAR(20) NOT NULL,
             LAST_NAME  CHAR(20),
             AGE INT,  
             SEX CHAR(1),
             INCOME FLOAT )"""
    
    cursor.execute(sql)
    
    # 关闭数据库连接
    db.close()
    

    三、操作数据

    3.1 插入操作

    import pymysql
    
    # 打开数据库连接
    db = pymysql.connect("localhost", "testuser", "test123", "TESTDB")
    
    # 使用cursor()方法获取操作游标
    cursor = db.cursor()
    
    # SQL 插入语句
    sql = """INSERT INTO EMPLOYEE(FIRST_NAME,
             LAST_NAME, AGE, SEX, INCOME)
             VALUES ('Mac', 'Mohan', 20, 'M', 2000)"""
    try:
        cursor.execute(sql)  # 执行sql语句
        db.commit()  # 提交到数据库执行
    except:
        db.rollback()  # 如果发生错误则回滚
    
    # 关闭数据库连接
    db.close()
    

    3.2 查询操作

    Python查询Mysql使用 fetchone() 方法获取单条数据,使用

    • fetchall():方法获取多条数据。
    • fetchone(): 该方法获取下一个查询结果集。结果集是一个对象
    • fetchall(): 接收全部的返回结果行.
    • rowcount(): 这是一个只读属性,并返回执行execute()方法后影响的行数。
    import pymysql
    
    # 打开数据库连接
    db = pymysql.connect("localhost", "testuser", "test123", "TESTDB")
    
    # 使用cursor()方法获取操作游标
    cursor = db.cursor()
    
    # SQL 查询语句
    sql = "SELECT * FROM EMPLOYEE 
           WHERE INCOME > %s" % (1000)
    try:
    
        cursor.execute(sql)  # 执行SQL语句
        results = cursor.fetchall()  # 获取所有记录列表
        for row in results:
            fname = row[0]
            lname = row[1]
            age = row[2]
            sex = row[3]
            income = row[4]
            # 打印结果
            print ("fname=%s,lname=%s,age=%s,sex=%s,income=%s" % 
                   (fname, lname, age, sex, income ))
    except:
        print("Error: unable to fetch data")
    
    # 关闭数据库连接
    db.close()
    

    3.3 更新操作

    import pymysql
    
    # 打开数据库连接
    db = pymysql.connect("localhost", "testuser", "test123", "TESTDB")
    
    # 使用cursor()方法获取操作游标
    cursor = db.cursor()
    
    # SQL 更新语句
    sql = "UPDATE EMPLOYEE SET AGE = AGE + 1 WHERE SEX = '%c'" % ('M')
    try:
        cursor.execute(sql)  # 执行SQL语句
        db.commit()  # 提交到数据库执行
    except:
        db.rollback()  # 发生错误时回滚
    
    # 关闭数据库连接
    db.close()
    

    3.4 删除操作

    import pymysql
    
    # 打开数据库连接
    db = pymysql.connect("localhost", "testuser", "test123", "TESTDB")
    
    # 使用cursor()方法获取操作游标
    cursor = db.cursor()
    
    # SQL 删除语句
    sql = "DELETE FROM EMPLOYEE WHERE AGE > %s" % (20)
    try:
        cursor.execute(sql)  # 执行SQL语句
        db.commit()  # 提交修改
    except:
        db.rollback()  # 发生错误时回滚# 关闭连接
    db.close()
    

    四、数据备份

    4.1 数据库的逻辑备份

    #语法:
    # mysqldump -h 服务器 -u用户名 -p密码 数据库名 > 备份文件.sql
    
    #示例:
    #单库备份
    mysqldump -uroot -p123 db1 > db1.sql
    mysqldump -uroot -p123 db1 table1 table2 > db1-table1-table2.sql
    
    #多库备份
    mysqldump -uroot -p123 --databases db1 db2 mysql db3 > db1_db2_mysql_db3.sql
    
    #备份所有库
    mysqldump -uroot -p123 --all-databases > all.sql
    

    4.2 数据恢复

    #方法一:
    [root@nick backup]# mysql -uroot -p123 < /backup/all.sql
    
    #方法二:
    mysql> use db1;
    mysql> SET SQL_LOG_BIN=0;   #关闭二进制日志,只对当前session生效
    mysql> source /root/db1.sql
    

    五、事务和锁

    begin;  # 开启事务
    select * from emp where id = 1 for update;  # 查询id值,for update添加行锁;
    update emp set salary=10000 where id = 1; # 完成更新
    commit; # 提交事务
    
  • 相关阅读:
    记第一场省选
    POJ 2083 Fractal 分形
    CodeForces 605A Sorting Railway Cars 思维
    FZU 1896 神奇的魔法数 dp
    FZU 1893 内存管理 模拟
    FZU 1894 志愿者选拔 单调队列
    FZU 1920 Left Mouse Button 简单搜索
    FZU 2086 餐厅点餐
    poj 2299 Ultra-QuickSort 逆序对模版题
    COMP9313 week4a MapReduce
  • 原文地址:https://www.cnblogs.com/nickchen121/p/11156443.html
Copyright © 2011-2022 走看看