美文网首页
python中数据库的相关操作-pymysql

python中数据库的相关操作-pymysql

作者: 菠萝吹雪huhu | 来源:发表于2019-10-17 14:17 被阅读0次

    python3中可以使用库pymysql

    数据准备:

        搭建一个数据库,我是在docker下搭建的Mysql(端口号是3306,账号是root,密码123456)

        建立数据库test_db,表TB_Student,表结构如下:

    TB_Student

    需要做的操作如下:

        在上述名单中,ID是连续编号的数字。现在需要按照班级给他们设一个新的序号(Seq),每个班级从1开始连续编号,输出如下表所示的结果,请写成相应的sql语句或者代码。

    增加一列后的表TB_Student

    以下是关于pymysql的相关知识

    1.先导入库名

    import pymysql

    可以在pycharm中下载相应的包

    2.连接数据库

    pymysql.connect(host="localhost",port=3306,database='test_db',user='root',password='123456')

    说明:

        host是数据库的地址,因为我的数据库就在本机,所以就是localhost

        port是在docker建立mysql的时候设置的端口(注意端口号非字符串,不用引号)

        database要使用到的数据库名

        user和password是连接mysql的账号、密码

    3.获取游标

    #使用cursor()方法创建一个游标对象 cursor

    cursor = db.cursor()

    4.执行SQL查询语句

    说明:

        声明游标后,可以反复调用cursor.execute()去执行不同sql语句

        查出来的结果是通过cursor.fetchall() 或者 cursor.fetchone()获取到的,是元组类型

    #使用execute()方法执行 SQL 查询

    cursor.execute("select count(*) from TB_Student;")

    #获取表里所有内容

    result_count = cursor.fetchall()

    #获取单条数据

    result_count = cursor.fetchone()

    5.执行修改语句

    注意:若有修改数据库的操作,需要执行commit操作,才可以生效,才可以真正把修改更新到数据库。

    #连接完数据库并不会自动提交,所以需要手动 commit 你的改动

    db.commit()

    以上是所需要的只是,所以最开始的问题的代码如下:

    #!/usr/bin/python3

    import pymysql

    #连接数据库

    #cursorclass = pymysql.cursors.DictCursor变成字典作为元素的列表,例如[{'count(*)': 13}]

    db = pymysql.connect(host="localhost",port=3306,database='test_db',user='root',password='123456',

                        cursorclass = pymysql.cursors.DictCursor)

    #通过连接对象获取游标

    cursor = db.cursor()

    #查询表TB_Student行数(在元组中)

    #使用execute()方法执行 SQL 查询

    cursor.execute("select count(*) from TB_Student;")

    #获取表里所有内容

    result_count = cursor.fetchall()

    #输出结果为[{'count(*)': 13}],'count(*)'是select语句里需要查询的字段

    print(result_count)

    #result_count[0][0]才是真正的表TB_Student行数

    print(result_count[0]['count(*)'])

    #为表TB_Student增加字段seq

    #cursor.execute("alter table TB_Student add seq int;")

    #i是列数

    #j是插入的数

    j=0

    n=5

    for i in range(1,result_count[0]['count(*)']+1):

        #seq的规律是(1234512345612345..)

        #当到第6、12、19列需要从新从1开始(j赋值为1)

        if j < n:

            j = j+1

        else:

            n = n+1

            j=1

        print("i:"+str(i)+" j:"+str(j))

        sql1="update TB_Student set seq=%s where id=%s"%(j,i)

        cursor.execute(sql1)

    cursor.execute("select * from TB_Student;")

    r1=cursor.fetchall()

    print(r1)

    #连接完数据库并不会自动提交,所以需要手动 commit 你的改动

    db.commit()

    db.close()

    相关文章

      网友评论

          本文标题:python中数据库的相关操作-pymysql

          本文链接:https://www.haomeiwen.com/subject/djjmmctx.html