zoukankan      html  css  js  c++  java
  • python通过pymysql实现数据库的增删改查

    今天实现了python对于数据库的增删改查工作:

    具体的每一步的数据库的增删盖茶自己都实验过了。

    掌握了基本的数据库操作语言。然后就是对于tuple()的认识。

    以及对于查询语句中的:fetchone、fetchmany、fetchall

    fetchone():获取下一行数据,第一次为首行;

    fetchall():获取所有行数据源

    fetchmany(4):获取4行数据

    默认情况下,我们获取到的返回值是元组,只能看到每行的数据,却不知道每一列代表的是什么,这个时候可以使用以下方式来返回字典,每一行的数据都会生成一个字典:

    cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)  #在实例化的时候,将属性cursor设置为pymysql.cursors.DictCursor

    在fetchone示例中,在获取行数据的时候,可以理解开始的时候,有一个行指针指着第一行的上方,获取一行,它就向下移动一行,所以当行指针到最后一行的时候,就不能再获取到行的内容,所以我们可以使用如下方法来移动行指针:

    cursor.scroll(1,mode='relative')  # 相对当前位置移动

    cursor.scroll(2,mode='absolute') # 相对绝对位置移动

    第一个值为移动的行数,整数为向下移动,负数为向上移动,mode指定了是相对当前位置移动,还是相对于首行移动

    具体自己实验过得代码如下:(代码中的所有方法都经过测试可行)

    #import pymysql
    #user = input('请输入用户名:')
    #pwd1 = input('请输入密码1:')
    #pwd2 = input('请输入密码2:')
    # 1.连接
    #conn = pymysql.connect("localhost", "root", "511924", "student", charset='utf8')
    # 2.创建游标
    #cursor = conn.cursor()
    # 2.创建游标
    #cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
    # 注意%s需要加引号
    ###########################################对于查询
    #fetch数据类型关于默认获取的数据是元祖类型,如果想要或者字典类型的数据
    # 游标设置为字典类型
    #cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
    #cursor.execute("select * from tb7")
    #row_1 = cursor.fetchone()
    #print(row_1)的结果为 {u'licnese': 213, u'user': '123', u'nid': 10, u'pass': '213'}
    ##############################################进行查询的相关操作
    #区间查询
    #sql = "select * from text where zhanghu ='%s' and sex between '%s' and '%s'" % (user, pwd1,pwd2)
    #多条件查询
    #sql = "select * from text where zhanghu ='%s' and sex='%s'" % (user, pwd1)
    # 3.执行sql语句
    #result = cursor.execute(sql)  # 执行sql语句,返回sql查询成功的记录数目
    #print(result)
    # 获取剩余结果的第一行数据
    #row_1 = cursor.fetchone()
    #print(row_1)#z只能通过row_1[1]等输出各项
    # 获取剩余结果前n行数据
    # row_2 = cursor.fetchmany(3)
    # 获取剩余结果所有数据
    # row_3 = cursor.fetchall()
    #row_3 = cursor.fetchall()
    #print(row_3[1][2])
    # 关闭连接,游标和连接都要关闭
    #cursor.close()
    #conn.close()
    #if result:
     #   print('登陆成功')
    #else:
     #   print('登录失败')
    #########################################################进行数据的增加
    #a1=input("输入姓名")
    #a2=input("输入密码")
    #((a1,a2),("dazhi666","88"))与[(a1,a2),("dazhi666","88")]都可以
    #也可以使用sql和tuple(valuesList)进行操作
    #effect_row = cursor.executemany("insert into text(zhanghu,sex)values(%s,%s)", ((a1,a2),("dazhi666","88")))
    #print(effect_row)
    #conn.commit()
    #cursor.close()
    #conn.close()
    #获取最后一个的自增id
    #new_id = cursor.lastrowid
    #print (new_id)
    ###################################################################数据库修改
    #q1=input("shuru1")
    #q2=input("shuru2")
    #sql = "update text set zhanghu = %s where sex = %s"
    #effect_row = cursor.execute(sql,(q1,q2))
    #print(effect_row)
    # 一定记得commit
    #conn.commit()
    # 4.关闭游标
    #cursor.close()
    # 5.关闭连接
    #conn.close()
    #################################################################数据库删除
    #wen=input("shuru")
    #wen2=input("shurud")
    #sql = "delete from text where sex = %s"
    #sql = "delete from text where sex between %s and %s"
    #effect_row = cursor.execute(sql,(wen,wen2))
    #print(effect_row)
    # 一定记得commit
    #conn.commit()
    # 4.关闭游标
    #cursor.close()
    # 5.关闭连接
    #conn.close()
    ######################################################################查询操作的字典行为
    #sql = 'select * from text'
    #cursor.execute(sql)
    # 查询第一行的数据
    #row = cursor.fetchone()
    #print(row)
    #print(row["zhanghu"])输出某一个元素的值
    # 查询第二行数据
    #row = cursor.fetchone()
    #print(row)
    #cursor.scroll(-1, mode='relative')  # 设置之后,光标相对于当前位置往前移动了一行,所以打印的结果为第二行的数据
    #row = cursor.fetchone()
    #print(row)
    #cursor.scroll(0, mode='absolute')  # 设置之后,光标相对于首行没有任何变化,所以打印的结果为第一行数据
    #row = cursor.fetchone()
    #print(row)
    # 4.关闭游标
    #cursor.close()
    # 5.关闭连接
    #conn.close()
  • 相关阅读:
    大脑不清醒什么原因?
    时间同步linux和window
    NTP服务及时间同步(CentOS6.x)
    刚刚我差点被银行信用卡分期给骗了!
    信用卡分期推销太烦人?你可以这样破解
    为何打印机里有一个文档一直等待打印,删不掉?
    win7下如何显示缅文和使用缅文输入法?
    win7如何连接蓝牙键盘
    @Autowired @Transaction @Service同时出现。
    Eclipse中设置格式化jsp自动换行
  • 原文地址:https://www.cnblogs.com/dazhi151/p/12466385.html
Copyright © 2011-2022 走看看