• pymysql


    pymysql是利用python连接mysql数据库的库

    1.连接数据库

    conn=pymysql.connect(host="127.0.0.1",user="root",password="123",database="db1")  

    使用connect()函数可以创建一个连接对象

    需要传入的参数包括

        host:数据库的IP地址

        user:登录数据库的用户名

        password:登录数据库的密码

        database:使用数据库名

        charset:设置字符集

    2.创建游标

    有了数据库的链接对象之后,就可以对数据库执行一定的操作了

    使用代码来连接数据库一般都需要一个中介,来具体执行SQL语句,一般是cursor(游标)

    创建游标对象

    cursor=conn.cursor
    

    在cursor()函数中可以传入参数来设置,查询的结果显示的结构,默认为null,显示的结构为

              整个是一个元组,查询到的一个记录也是一个元组对象

        传入参数

    cursor=conn.cursor(pymysql.cursors.DictCursor)
    

         得到的结果为:

         整个是一个列表,一个记录是一个字典,键是列名

    3.执行SQL语句

    创建好游标对象之后,就可以使用游标对象来执行一些sql语句

    首先是生成sql语句,一般的,为了数据库安全,不要自己拼接sql语句

    正确的拼接sql的方式是将传入的参数放到游标执行sql语句的函数中

    sql="select * from userinfo where username=%s and password=%s"
    cursor.execute(sql,user,pwd)
    

       注意:

              在原有sql语句中使用%s做占位符

               使用execute()函数来执行sql语句

                可以将传入的参数封装成列表,元组,字典(此时需要在占位符上加上标记如:%(user)s来作为键)

                如果需要执行多行sql语句可以使用executemany()

    sql="insert into userinfo(username,password) values(%s,%s)"
    corsor.executemany(sql,[("egon",111),("alex","222")])
    

                 执行sql语句之后可以有返回值,这个返回值是一个整数值,表示受影响的函数,如果是查询语句,得到的就是结果的行数

                 执行修改数据库的操作,需要提交事务来生效

    conn.commit()
    

    4.获得执行结果 

    可以通过fetchone(),fetchall(),fetchmany()来得到执行的结果

    result=cursor.fethone()
    

    其中,fetchone得到的一条数据,fetchall表示取得查询所有的结果,fetchmany可以传入一个数值,表示取得多少行

    一般的,不适用fetchmany,要想使用少数部分的值,应该在sql中做一定的查询限制(limit),这样能够保证内存不被查询得到的大数据撑爆

    在取数据的时候,类似文件的光标性质,得到一行光标移动到下一行,如果先执行fetchall,那个在fertch得到的结果就是空了

    可以设置光标的移动

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

    5.得到最后行ID

    有的时候,我们插入数据的时候是不设置数据的ID的,但是我们还需要获得对该ID当做数据插入到另一个表时候

    如有文章表和文章媒体表

    这时就需要获得最后插入数据时候的ID

    cursor.execute(sql)
    peinr(cursor.lastrowid)
    

    6.关闭

    先关闭游标,再关闭连接

    cursor.close()
    conn.close()
    

      

  • 相关阅读:
    mysql主从配置的过程
    redis 命令行客户端utf8中文乱码问题
    十五分钟介绍 Redis数据结构--学习笔记
    70路小报:用PV和UV作为网站衡量指标已经过时
    安装redis环境
    网站统计IP PV UV实现原理
    服务器启动脚本 /etc/rc.local
    LeetCode: Longest Valid Parentheses
    LeetCode: Next Permutation & Permutations1,2
    LeetCode: divideInteger
  • 原文地址:https://www.cnblogs.com/asaka/p/6972649.html
Copyright © 2020-2023  润新知