Python读写MariaDB数据库

接上一篇博客,RHEL7下实现MariaDB数据库的安装以及增删改查操作https://blog.csdn.net/zZzZzZ__/article/details/103428433最终我们要在python下实现数据库的增删改查。

我的环境是Python3,首先使用pip来安装PyMySQL模块。

 sudo python3 -m pip install PyMySQL
  • 创建数据表并向表中插入数据(增) 

在进行数据的插入时遇到了一个问题困扰了我几个小时,就是如何将 data = "沙雕%s"%i中的data这个字符串作为插入的字符串,一开始我用create_data = """insert into person values({0},{1});""".format(data,i)这段代码,出现报错,虽然这个data是一个字符串,但是一放到"""insert into person values({0},{1});"""中的{0}里面就变成了一个没有引号的字符串了,导致最后我们执行插入命令时执行的是insert into person values(沙雕i,i);""",字符串的引号没了,所以执行出错,最后在data两端加上两个引号就解决了。

import pymysql
# 1.连接数据库
conn=pymysql.connect(
    host="localhost",       # 连接主机名,也可以用ip地址,例如127.0.0.1
    user="root",            # 连接用户名
    passwd="000000",        # 用户密码
    db="mydata",            # 要连接的数据库名
    charset="utf8",         # 指定编码格式
    autocommit=True,        # 如果插入数据,, 是否自动提交? 和conn.commit()功能一致。

)
# 2.创建游标对象,用来给数据库发送sql语句
cur=conn.cursor()
try:
    create_table="create table if not exists " \
              "person(name varchar(20),age int) default charset=utf8;"
    cur.execute(create_table)
    for i in range(10):
        data = "沙雕%s"%i
        create_data = """insert into person values(\'{0}\',{1});""".format(data,i)
        cur.execute(create_data)
except Exception as e:
    print("插入数据失败:", e)
else:
    print("插入数据成功:")
cur.close() # 关闭数据库连接

运行结果:

  • 删除表中的数据(删)

import pymysql
# 1.连接数据库
conn=pymysql.connect(
    host="localhost",       # 连接主机名,也可以用ip地址,例如127.0.0.1
    user="root",            # 连接用户名
    passwd="000000",        # 用户密码
    db="mydata",            # 要连接的数据库名
    charset="utf8",         # 指定编码格式
    autocommit=True,        # 如果插入数据,, 是否自动提交? 和conn.commit()功能一致。

)
# 2.创建游标对象,用来给数据库发送sql语句
cur=conn.cursor()
try:
    for i in range(5):
        data = "沙雕%s"%i
        delete_data = """delete from person where name=\'{}\';""".format(data)

        cur.execute(delete_data)
except Exception as e:
    print("删除数据失败:", e)
else:
    print("删除数据成功:")
cur.close() # 关闭数据库连接

运行结果:

  • 修改表中的数据(改)

import pymysql
# 1.连接数据库
conn=pymysql.connect(
    host="localhost",       # 连接主机名,也可以用ip地址,例如127.0.0.1
    user="root",            # 连接用户名
    passwd="000000",        # 用户密码
    db="mydata",            # 要连接的数据库名
    charset="utf8",         # 指定编码格式
    autocommit=True,        # 如果插入数据,, 是否自动提交? 和conn.commit()功能一致。

)
# 2.创建游标对象,用来给数据库发送sql语句
cur=conn.cursor()
try:
    for i in range(5,10):
        data = "沙雕%s"%i
        alter_data = """update person set age={0} where name=\'{1}\';""".format(i+1,data)
        cur.execute(alter_data)
except Exception as e:
    print("修改数据失败:", e)
else:
    print("修改数据成功:")
cur.close() # 关闭数据库连接

运行结果:

  •  查找表中的数据(查)

import pymysql
# 1.连接数据库
conn=pymysql.connect(
    host="localhost",       # 连接主机名,也可以用ip地址,例如127.0.0.1
    user="root",            # 连接用户名
    passwd="000000",        # 用户密码
    db="mydata",            # 要连接的数据库名
    charset="utf8",         # 指定编码格式
    autocommit=True,        # 如果插入数据,, 是否自动提交? 和conn.commit()功能一致。

)
# 2.创建游标对象,用来给数据库发送sql语句
cur=conn.cursor()
try:
    serch_data = """select * from person"""
    result = cur.execute(serch_data)
    print(result)           # 默认不返回查询结果集,返回数据记录数
    print(cur.fetchone())   # 获取下一个查询结果集
    print(cur.fetchmany(3)) # 获取制定个数个查询结果集
    print(cur.fetchall())   # 获取所有的查询结果,当前记录数和剩下所有记录数
    print(cur.rowcount)     # 返回执行sql语句影响的行数
    #数据库游标指针的移动
    print("正在移动指针到最开始......")
    print(cur.scroll(0, "absolute"))
    print(cur.fetchmany(3))
    print("正在移动指针到倒数第1个......")
    # 1:表示当前位置向后移动1行;-1:表示当前位置向前移动1行
    cur.scroll(1, mode='relative')
    print(cur.fetchall())

except Exception as e:
    print("查询数据失败:", e)
else:
    print("查询数据成功:")
cur.close() # 关闭数据库连接

参考博客 https://blog.csdn.net/hzyuhz/article/details/86526053 

发布了92 篇原创文章 · 获赞 15 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/zZzZzZ__/article/details/103450983