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

    注意:python或任何编程语言php.java..net等,不能直接连接数据库!

    需要安装对应的数据库驱动(第三方模块)   [比如:  不同品牌手机连接到电脑,需要安装驱动包,才传输数据]

    连接不同数据库,需要下载不同的驱动包!

    python操作数据库流程

    下载mysql驱动模块(pymysql)

    引入模块

    建连接(建立和数据库连接)

    执行sql语句

      非查询:增加,删,修改

      查询:select

    处理结果

    释放资源

      关连接

      关游标

    驱动介绍:

    python操作mysql驱动/第三方模块: MySQLdb PyMysql

    pymysql: 支持2.x 支持3.x

    mysqldb: 只支持3.x

    #安装模块     pip install pymysql

    增删改

    SQL

    # 增加

    insert into 表名(列1,列2,....) values(值1,值2,...)

    # 删除

    delete from 表名 ; # 删除表中所有数据!

    delete from 表名 where 条件;

    # 修改

    update 表名 set 列1=值1,列2=值2,....; #不加条件,修改所有列!~

    update 表名 set 列1=值1,列2=值2,....where 条件;

     

    select * from students where sex ='男';

    insert into students(name,sex,age,birthday,phone,addr)

    values('刘帅','女',20,now(),'17600950805','山西') ;

    update students set sex='男' where name ='刘帅'

    delete from students where name ='刘晒'

    python实现非查询

      非查询:步骤一样

      区别:sql语句不同,参数个数不同

    def my_execute(sql,params):

      '''非查询通用功能! sql语句, 参数列表'''

    # 2.连接

      conn =
    pymysql.connect(host='39.98.39.173',port=13306,user='root',passwd='root',db='1909C2',c
    harset='utf8')
      print(conn)
      # 3. 获取游标
      cur = conn.cursor()
      # 4. 执行sql
      num = cur.execute(sql,params)
      #print(f'影响行数:{num}')
      conn.commit() # 必须手动提交到数据库!
      # 5. 释放资源
      cur.close()
      conn.close()
      # 返回影响行数!
      return num

    if __name__ == '__main__':
      # 通用
      sql ='insert into students(name,sex,age,birthday,phone,addr)
    values(%s,%s,%s,%s,%s,%s)'
      params=('王五','女',39,'2020-11-03','17600950805','山西')
      if my_execute(sql,params)>0:
          print('数据库操作成功!')
      else:
          print('数据库操作失败!')

    参数如何传递

    sql ='insert into students(name,sex,age,birthday,phone,addr)
    values(%s,%s,%s,%s,%s,%s)'
    # 格式:一行数据就是一个元组!
    params=('王五','女',39,'2020-11-03','17600950805','山西')
    num = cur.execute(sql,params)

    批量执行非查询

    sql ='insert into students(name,sex,age,birthday,phone,addr)
    values(%s,%s,%s,%s,%s,%s)'
    # 格式:一行数据就是一个元组!
    params=[('王五1','女',39,'2020-11-03','17600950805','山西'),('王五2','女',39,'2020-11-
    03','17600950805','山西')]
    num = cur.executemany(sql,params) # 结果大于1的

    核心对象

    连接对象: conn= pymysql.connect(host='IP地址',port=13306,user='用户名',passwd='密
    码',db='数据库名',charset='utf)
      conn.close() #关闭
      cur= conn.cursor() 创建游标
    游标 Cursor 操作数据库依靠游标! 

      num = cur.execute(sql,参数) 执行非查询,返回影响的行数!
      num=cur.executemangy(sql,[(),(),..]) 批量执行非查询,返回影响行数!
      cur.close()
      cur.fetchone() 抓取1条,,返回元组或None
      cur.fetchall() 抓取所有
      cur.fetchmany(大小) 指定抓取大小
      cur.next() 游标下移!

    查询

    import pymysql
    def get_one():
      # 1. 连接
      conn = pymysql.connect(host='39.98.39.173', port=13306, user='root',
    passwd='root', db='1909C2', charset='utf8')
      # 2. 打开游标
      cur = conn.cursor()
      # 3. 执行
      sql ='select * from students where sex = %s'
      cur.execute(sql,('女'))
      #result = cur.fetchone() # 返回一个元组() 默认找第1个!
      result = cur.fetchall() # 返回多个元祖 ((),(),(),...)
      print(result)
      for stu in result:
        print(f'id:{stu[0]},名字:{stu[1]}')
      # 4.关闭资源
      cur.close()
      conn.close()
    if __name__ == '__main__':
      get_one()

  • 相关阅读:
    Metinfo 5.x 管理员密码重置漏洞
    【CVE-2018-11116】openwrt rpcd 配置文件错误导致访问控制失效
    openwrt-rpcd服务ACL配置错误风险分析
    黑客基础知识
    渗透测试(漏洞利用)
    Niagara物联网框架机制二(笔记)
    基于kali linux无线网络渗透测试
    渗透测试(漏洞扫描)
    Workbench热水泵系统
    Niagara物联网框架机制一(笔记)
  • 原文地址:https://www.cnblogs.com/xyh10201117/p/13924064.html
Copyright © 2011-2022 走看看