zoukankan      html  css  js  c++  java
  • pymysql模块操作数据库与mysql数据备份

    • 链接参数

      host='127.0.0.1'	#计算机的IP地址
      port=3306 			#数据库的端口号
      user='root'			#数据库的用户名
      password='root'		#用户密码
      database='lucky'	#要连接数据库名
      charset='utf8'		#链接数据的编码格式
      
    • 代码示例

      import pymysql
      1:#查询
      conn = pymysql.connect(
      	host='127.0.0.1', #主机
      	port=3306, #端口号
      	user='root',#用户名
      	password='666', #密码
      	database='day43', #需要连接的库
      	charset='utf8'#指定编码
      )
      cursor = conn.cursor()#获取游标,默认获取的是元祖嵌套形式的数据
      sql = "select * from dep;" #sql语句
      ret = cursor.execute(sql) #ret 受影响的行数
      print(cursor.fetchall())  #取出所有的
      print(cursor.fetchmany(3))  #取出多条不写参数默认是取一条
      print(cursor.fetchone())  #取出单条
      
      cursor.scroll(3,'absolute')  #绝对移动,按照数据最开始位置往下移动3条
      cursor.scroll(3,'relative')  #相对移动,按照当前光标位置往下移动3条
      '''
      cursor 获取游标的时候默认获取的是元祖套元祖的数据类型,可以指定使用字段的方式,来获取字典的数据格式
      '''
      #字典格式的游标
      cursor = conn.cursor(pymysql.cursors.DictCursor)
      
    • pymysql插入数据

      #插入
      conn = pymysql.connect(
      	host='127.0.0.1', #主机
      	port=3306, #端口号
      	user='root',#用户名
      	password='666', #密码
      	database='day43', #需要连接的库
      	charset='utf8'#指定编码
      )
      cursor = conn.cursor()#获取游标,默认获取的是元祖嵌套形式的数据
      sql = "insert into t1 values (3,'xx3',18);" #sql语句
      ret = cursor.execute(sql) #ret 受影响的行数
      conn.commit()  #增删改操作时,需要进行提交
      
    • sql注入解决方案

      #sql注入:解决方案
      	cursor.execute(sql,[参数1,参数2...])
       import pymysql
      
      conn = pymysql.connect(
          host='127.0.0.1',
          port=3306,
          user='root',
          password='666',
          database='day43',
          charset='utf8',
      )
      while 1:
          username = input('请输入用户名:')
          password = input('请输入密码:')
          cursor = conn.cursor(pymysql.cursors.DictCursor)
          sql = "select * from userinfo where username=%s and password=%s;"
          #cursor.execute(sql,[uname,pword]) ,其实它本质也是帮你进行了字符串的替换,只不过它会将uname和pword里面的特殊字符给过滤掉。
          ret = cursor.execute(sql,[username,password])
          #ret我们说是得到的行数,如果这个行数不为零,说明用户输入的用户名和密码存在,如果为0说名存在
          if ret:#如果输入的用户名和密码错误,这个结果为0,如果正确,这个结果为1
              print('登录成功')
          else:
              print('账号或者密码错误,请重新输入!!!')
      
    • 获取插入的最后一条数据的自增ID

      import pymysql
      conn=pymysql.connect(host='localhost',user='root',password='123',database='egon')
      cursor=conn.cursor()
      sql='insert into userinfo(name,password) values("xxx","123");'
      rows=cursor.execute(sql)
      print(cursor.lastrowid) #在插入语句后查看
      conn.commit()
      cursor.close()
      conn.close()
      

    Mysql数据库数据备份和恢复

    #使用mysqldump实现数据库的备份
    mysqldump -uroot -p -B -d 库名 > f:数据库备份练习crm2stru.sql
    Enter password: ***
    '''
    mysqldump也是mysql数据库的一个命令,-u用户名,-p密码 -B指的是在备份数据的时候,备份的数据增加建库的语句和use语句,>号后面指定路径数据备份保存的路径和文件名
    '''
    #利用mysql命令回复数据
    '''
    恢复数据首先要把数据库中原来的库删除,然后把备份的数据导入进来,<号表示得就是要导入进来,后面写上备份数据的路径,运行就可以回复数据
    '''
    mysql -u用户名 -p 密码 库名 < f:数据库备份练习crm2stru.sql
    
  • 相关阅读:
    在Magento中添加一个自己的支付模块----第一部分
    留言互相关注哟
    【Java】final修饰符的使用
    【java】关于Cannot refer to the non-final local variable list defined in an enclosing scope解决方法
    【Java】遍历List/Set/Map集合的一些常用方法
    Java Socket编程,小案例(有注释)
    xml解析
    阿九说:Dom4j解析XML
    神秘的Java注解
    反射是框架设计的灵魂
  • 原文地址:https://www.cnblogs.com/luckinlee/p/11621192.html
Copyright © 2011-2022 走看看