zoukankan      html  css  js  c++  java
  • 用python操作mysql数据库

    数据库的安装和连接

    PyMySQL的安装

    pip install PyMySQL

    python连接数据库

    1 import pymysql
    2 
    3 db = pymysql.connect("数据库ip","用户","密码","数据库" ) # 打开数据库连接
    4 cursor.execute("SELECT VERSION()")                    # 使用 execute() 方法执行 SQL 查询
    5 data = cursor.fetchone()                              # 使用 fetchone() 方法获取单条数据
    6 print ("Database version : %s " % data)
    7 db.close() 
    View Code
    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()

    操作数据

    插入操作

    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()
     1 import pymysql
     2  
     3 # 打开数据库连接
     4 db = pymysql.connect("localhost","testuser","test123","TESTDB" )
     5  
     6 # 使用cursor()方法获取操作游标 
     7 cursor = db.cursor()
     8  
     9 # SQL 插入语句
    10 sql = "INSERT INTO EMPLOYEE(FIRST_NAME, \
    11        LAST_NAME, AGE, SEX, INCOME) \
    12        VALUES (%s, %s,  %s,  %s,  %s )" % \
    13        ('Mac', 'Mohan', 20, 'M', 2000)
    14 try:
    15    
    16    cursor.execute(sql)  # 执行sql语句
    17    db.commit()          # 执行sql语句
    18 except:
    19    db.rollback()        # 发生错误时回滚
    20  
    21 # 关闭数据库连接
    22 db.close()
    另一种形式

    查询操作

    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()

      更新操作

      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()

      删除操作

      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()

      数据备份

      数据库的逻辑备份

      #语法:
      # 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 

      数据恢复

      #方法一:
      [root@egon 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; # 提交事务
  • 相关阅读:
    Java +安卓 定时任务
    android动画解析(初级)
    语义化版本 2.0.0
    团队中的 Git 实践
    Spring和SpringBoot比较,解惑区别
    Spring boot 拦截器和过滤器
    [ERROR] Failed to execute goal org.apache.maven.plugins:maven-install-plugin:2.4:install (default-cli) on project kircp-js-plan-resource: The packaging for this project did not assign a file to the bu
    Java函数优雅之道
    在springMVC的controller中获取request,response对象的一个方法
    Kotlin 数据类型(数值类型)
  • 原文地址:https://www.cnblogs.com/shiguanggege/p/11587621.html
Copyright © 2011-2022 走看看