工具:vscode , navicat for MySQL,使用之前需下载pymysql模块(windows平台下)
(win+R–>cmd–>pip install pymysql)若是Anaconda用户直接使用conda命令下载
1.连接数据库
代码:
import pymysql
host="localhost"
username="root"
password="123456"
db_name="test"
#创建connect对象
connect=pymysql.connect(host,username,password,db_name)
#获取游标对象
cursor=connect.cursor()
cursor.execute("SELECT VERSION()")
result=cursor.fetchone()
print(result)
cursor.close()
connect.close()
连接成功将打印mysql的版本
('5.7.26-log',)
2.在vscode创建表
连接test数据库,创建表单name=users,属性包括id,name,age
代码:
import pymysql
import pprint
host="localhost"
username="root"
password="123456"
db_name="test"
create_sql="""
CREATE TABLE `users`(
`id` INT NOT NULL AUTO_INCREMENT,
`name` VARCHAR(45) NULL,
`age` INT NULL,
PRIMARY KEY(`id`))
DEFAULT CHARACTER SET =utf8;
"""
#创建connect对象
connect=pymysql.connect(host,username,password,db_name)
#获取游标对象
cursor=connect.cursor()
cursor.execute(create_sql)
#查询表的结构
cursor.execute("DESC users")
result=cursor.fetchall()
pprint.pprint(result)
cursor.close()
connect.close()
执行代码后,在navicat可见创建的表单users
3.向表中插入数据
插入数据后需要调用commit()方法提交对数据库的修改,不然数据不会插入到数据库中
代码:
import pymysql
host="localhost"
username="root"
password="123456"
db_name="test"
insert_sql="""
INSERT INTO users(id,name,age)
VALUES (1,'小白',16),(2,'大白',20),(3,'小明',18)
"""
#创建connect对象
connect=pymysql.connect(host,username,password,db_name,charset='utf8')
#获取游标对象
cursor=connect.cursor()
try:
#插入数据
cursor.execute(insert_sql)
connect.commit()
print("插入成功")
pass
except Exception as e:
connect.rollback()
print("插入失败",e)
cursor.close()
connect.close()
在数据库可看到插入的数据
4.查询数据
fetchone()方法返回一行数据,fetchall()方法获取所有数据
代码:
import pymysql
import pprint
host="localhost"
username="root"
password="123456"
db_name="test"
#创建connect对象
connect=pymysql.connect(host,username,password,db_name,charset='utf8')
#获取游标对象
cursor=connect.cursor(pymysql.cursors.DictCursor)
cursor.execute("SELECT * FROM users")
result=cursor.fetchone()
print("fetchone")
pprint.pprint(result)
cursor.execute("SELECT * FROM users")
result=cursor.fetchall()
print("fetchall")
pprint.pprint(result)
cursor.close()
connect.close()
程序执行结果:
fetchone
{'age': 16, 'id': 1, 'name': '小白'}
fetchall
[{'age': 16, 'id': 1, 'name': '小白'},
{'age': 20, 'id': 2, 'name': '大白'},
{'age': 18, 'id': 3, 'name': '小明'}]
5.更新数据
此处我们对id 为2的修改其age
代码:
import pymysql
import pprint
host="localhost"
username="root"
password="123456"
db_name="test"
#创建connect对象
connect=pymysql.connect(host,username,password,db_name,charset='utf8')
#获取游标对象
cursor=connect.cursor(pymysql.cursors.DictCursor)
cursor.execute("SELECT * FROM users")
result=cursor.fetchall()
print("更新前:")
pprint.pprint(result)
cursor.execute("UPDATE users SET age=30 WHERE id=2")
connect.commit()
cursor.execute("SELECT * FROM users")
result=cursor.fetchall()
print("更新后:")
pprint.pprint(result)
cursor.close()
connect.close()
执行结果:
更新前:
[{'age': 16, 'id': 1, 'name': '小白'},
{'age': 20, 'id': 2, 'name': '大白'},
{'age': 18, 'id': 3, 'name': '小明'}]
更新后:
[{'age': 16, 'id': 1, 'name': '小白'},
{'age': 30, 'id': 2, 'name': '大白'},
{'age': 18, 'id': 3, 'name': '小明'}]
navicat 查看数据变化
6.删除数据
此处删除id=3的数据
代码:
import pymysql
import pprint
host="localhost"
username="root"
password="123456"
db_name="test"
#创建connect对象
connect=pymysql.connect(host,username,password,db_name,charset='utf8')
#获取游标对象
cursor=connect.cursor(pymysql.cursors.DictCursor)
cursor.execute("SELECT * FROM users")
result=cursor.fetchall()
print("删除前:")
pprint.pprint(result)
cursor.execute("DELETE FROM users WHERE id=3")
connect.commit()
cursor.execute("SELECT * FROM users")
result=cursor.fetchall()
print("删除后:")
pprint.pprint(result)
cursor.close()
connect.close()
执行结果:
删除前:
[{'age': 16, 'id': 1, 'name': '小白'},
{'age': 30, 'id': 2, 'name': '大白'},
{'age': 18, 'id': 3, 'name': '小明'}]
删除后:
[{'age': 16, 'id': 1, 'name': '小白'}, {'age': 30, 'id': 2, 'name': '大白'}]