目录
数据库准备
CREATE TABLE `t_user` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL,
`age` int(11) DEFAULT NULL,
`address` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;
首先需要在本项目的控制台中安装pymysql包
pip install pymysql
查询数据
导入pymysql包
import pymysql
# 创建连接对象
conn=pymysql.connect(host="localhost",port=3306,user="root",password="xxx",database="python_test")
# 获取游标对象
cs=conn.cursor()
# sql语句
sql="select * from t_user;"
# 执行sql
content=cs.execute(sql)
# 打印结果
print(content)
# 关闭游标和连接
cs.close()
conn.close()
执行代码,发现只得到了数据数量。
那么如何获取数据呢,使用cs.fetchone()方法
import pymysql
# 创建连接对象
conn=pymysql.connect(host="localhost",port=3306,user="root",password="xxx",database="python_test")
# 获取游标对象
cs=conn.cursor()
# sql语句
sql="select * from t_user;"
# 执行sql
content=cs.execute(sql)
# 获取单个数据
content=cs.fetchone()
# 打印结果
print(content)
这样只是获取了一行数据,那么如何获取所有的数据,就需要用到cs.fetchall()方法
import pymysql
# 创建连接对象
conn=pymysql.connect(host="localhost",port=3306,user="root",password="xxx",database="python_test")
# 获取游标对象
cs=conn.cursor()
# sql语句
sql="select * from t_user;"
# 执行sql
content=cs.execute(sql)
# 获取所有数据
content=cs.fetchall()
# 打印结果
print(content)
# 关闭游标和连接
cs.close()
conn.close()
python是以元组的形式返回所有的数据
增加数据
import pymysql
# 创建连接对象
conn=pymysql.connect(host="localhost",port=3306,user="root",password="xxx",database="python_test")
# 获取游标对象
cs=conn.cursor()
sql="insert into t_user value(null,'宋江',23,'河北省');"
cs.execute(sql)
# sql语句
sql="select * from t_user;"
# 执行sql
content=cs.execute(sql)
content=cs.fetchall()
# 打印结果
print(content)
# conn.commit()
# 关闭游标和连接
cs.close()
conn.close()
可以看到输出的结果中添加了一个id为6的数据
但是当我们到数据库中查看的话,发现还是5条数据,并没有加入id为6的数据
之所以发生这种情况是因为,python并不会自动提交事务,所以需要手动去提交事务,手动调用conn.commit()方法
import pymysql
# 创建连接对象
conn=pymysql.connect(host="localhost",port=3306,user="root",password="xxx",database="python_test")
# 获取游标对象
cs=conn.cursor()
sql="insert into t_user value(null,'宋江',23,'河北省');"
cs.execute(sql)
# sql语句
sql="select * from t_user;"
# 执行sql
content=cs.execute(sql)
content=cs.fetchall()
# 打印结果
print(content)
conn.commit()
# 关闭游标和连接
cs.close()
conn.close()
注意:这里之所以新数据为7是因为,id为自增的,之前没有提交事务,但是id号已经被使用了,所以再次新增就会从7开始自增。
删除
import pymysql
# 创建连接对象
conn=pymysql.connect(host="localhost",port=3306,user="root",password="xxx",database="python_test")
# 获取游标对象
cs=conn.cursor()
# sql语句
sql="delete from t_user where id='7';"
# 执行sql
content=cs.execute(sql)
conn.commit()
# 关闭游标和连接
cs.close()
conn.close()
启动程序,发现id为7的数据已经被删除,注意:必须要手动提交事务
修改
import pymysql
# 创建连接对象
conn=pymysql.connect(host="localhost",port=3306,user="root",password="xxx",database="python_test")
# 获取游标对象
cs=conn.cursor()
# sql语句
sql="update t_user set name='张飞' where id='5';"
# 执行sql
content=cs.execute(sql)
conn.commit()
# 关闭游标和连接
cs.close()
conn.close()