数据库: Python连接数据库实现增 删 改 查 操作
<p><iframe name="ifd" src="https://mnifdv.cn/resource/cnblogs/LearnMysql" frameborder="0" scrolling="auto" width="100%" height="1500"></iframe></p>
准备好测试的数据库
IP: 47.92.31.46
用户名: yang
密码: 11223344.
数据库名字 : databasetest
表格: userinfo
这是我云端电脑安装的数据库,大家都可以连接测试
我设置了权限,只可以增删改查数据
下载包
输入 pymysql
新建文件
连接数据库
import pymysql #数据库 db = pymysql.connect(host="47.92.31.41",user="yang",password="11223344.",database="databasetest",charset="utf8",use_unicode=True) #只要执行下来就说明连接上了 print("成功连接数据库") db.close();#关闭连接
插入数据
一,插入数据,id是1,用户名是yang 密码是11223344
"insert into userinfo "+ " values(1,"+"'"+ "yang" +"'"+ "," +"'"+"11223344"+"'"+")";
insert into userinfo : 插入数据到 userinfo 表格
1 :id的值,自动递增
yang : 用户名
11223344 :密码
注:一般插入字符串型数据需要在数据两边加 ' '
也就是 '数据'
sql = "insert into userinfo " + " values(1," + "'" + "yang" + "'" + "," + "'" + "11223344" + "'" + ")";
cursor = db.cursor()
cursor.execute(sql)
db.commit() # 提交数据
运行测试
插入数据(第二种)
sql = "insert into userinfo "+ " values(NULL,"+"'"+ "yangyang" +"'"+ "," +"'"+"00000000"+"'"+")";
和上面相比 value(NULL.....)
设置第一个字段是空,意思是不填写第一个字段(默认就会自动递增)
运行测试
总结上两种插入数据方式
values里面的值依次填到表格中,如果数据不够,后面的就不插入数据
插入数据(第三种)
sql = "insert into userinfo (username,password)"+ "values(" +"'"+ "yangyang" +"'"+ "," +"'"+"11111111"+"'"+")";
(username,password) 后面的values里面的数据对应插到哪个字段里面
yangyang 插入到 username 字段里面
11111111 插入到 password 字段里面
运行测试
删除数据
sql = "delete from userinfo "+" where "+"username = "+"'"+"yang" +"'";
删除 userinfo表格中 username字段中是 yang的数据
意思就是删除,下面这条数据
运行测试
sql = "delete from userinfo "+" where "+"username = "+"'"+"yangyang" +"'"+ " and " +"password ="+"'"+"00000000"+"'";
删除 userinfo表格中 username字段中是 yangyang,同时password字段中是 00000000 的数据
其实就是删除这个
运行测试
修改数据
sql = "update userinfo set password="+"'"+"888888"+"'" +"where username="+"'"+"yangyang"+"'";
找到userinfo表格中username字段值是yangyang的
然后把 password字段的值修改为 888888
其实就是把11111111修改为888888
运行测试
当然也可以直接设置
sql = "update userinfo set password="+"'"+"888888"+"'";
查询数据
测试
为直观看到下面的测试增加一个用户名和密码
查询表格中的所有username字段的值
sql = "select username from userinfo";#查询表格中的所有username字段的值
try:
cursor = db.cursor()
cursor.execute(sql)
# 获取所有记录列表
results = cursor.fetchall()
for row in results:
print (row[0])
except:
print ("error")
运行测试
查询表格中的密码是666666的用户名
sql = "select username from userinfo where password = 666666";//查询表格中的密码是666666的用户名
运行测试
//查询表格中password是666666的所有数据
sql = "select *from userinfo where password = 666666";#查询表格中password是666666的所有用户信息
try:
cursor = db.cursor()
cursor.execute(sql)
# 获取所有记录列表
results = cursor.fetchall()
for row in results:
print (row[0],row[1],row[2])
except:
print ("error")
运行测试
补充
若想让数据库支持断线重连
try: cursor.execute(sql) db.commit() # 提交数据 except Exception as e: try: db.ping(); except Exception as e: db.connect(); cursor.execute(sql) db.commit() # 提交数据