接上一篇博客,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() # 关闭数据库连接