Python高级培训:MySQL
一、连接数据库
Python3.x利用PyMySQL来实现对MySQL数据库的对接,增删改查等操作都可以再python中利用它来完成
-
下载安装pymyql库
直接用pip命令安装后导入即可,以下的内容均需要导入Pymysql
pip3 install pymysql
- 连接数据库(对数据库的任何操作都需要首先连接到数据库)
DBHOST = 'localhost' # 主机名
DBUSER = 'root' # 用户名
DBPASS = 'password' # 密码,没设就是root
DBNAME = 'databasename' # 数据库名
try:
db = pymysql.connect(host=DBHOST,user=DBUSER, password=DBPASS, database=DBNAME)
print('数据库连接成功!')
except pymysql.Error as e:
print('数据库连接失败'+str(e))
其中,主机名用户名以及密码在创建数据库时均已设定,数据库名可在命令行窗口利用下面的命令进入MySQL查看(必须进入到MySQL的安装目录下的bin文件中才能使用该命令,如果嫌麻烦不想进入该文件内打开,可以将bin文件添加到Windows的环境变量中)
mysql -u root -p // root是用户名
紧接着输入密码,输入完毕后就进入MySQL中了
之后利用下面的命令即可查询自己已创建的数据库,之后均在hjh_db_000下操作
show databases;
二、创建新表
- 创建一个游标
- 创建表之前先检查是否存在,如果存在则删除
- 编辑sql语句
DBHOST = 'localhost'
DBUSER = 'root'
DBPASS = 'shixian666'
DBNAME = 'hjh_db_000'
sqlQuery = "CREATE TABLE Student(Name CHAR(20) NOT NULL ,Email CHAR(20),Age int )"
try:
# 连接数据库
db = pymysql.connect(host=DBHOST, user=DBUSER, password=DBPASS, database=DBNAME)
print('DataBases Connect Successfully! ')
cur = db.cursor() # 声明一个游标,相当于闪烁的光标
cur.execute('DROP TABLE IF EXISTS Student') # 如果叫Student的表已存在就删除
cur.execute(sqlQuery) # 执行sqlQuery中的SQL语句
print('New Table Create Successfully! ')
except pymysql.Error as e:
print('New Table Create Failure! '+str(e))
对MySQL数据库的操作仍然需要记忆它的语句,Pymysql只是将Python与MySQL连接。
插入成功后,利用下面的命令进入hjh_db_000数据库
use hjh_db_000 // use + 数据库名 进入该数据库
接着,利用下面的命令查看该数据库下的表,显示结果为:含有一张表student
show tables;
三、插入数据
- 编辑sql语句
- 编辑准备插入的值
import pymysql
DBHOST = 'localhost'
DBUSER = 'root'
DBPASS = 'shixian666'
DBNAME = 'hjh_db_000'
# 定义mysql语句和value
sqlQuery = " INSERT INTO Student (Name, Email, Age) VALUE (%s,%s,%s) "
value1 = ('Mike', '147789@163.com', 20)
value2 = ('John', '654321@163.com', 20)
value3 = ('John', '011228@163.com', 19)
try:
# 连接数据库
db = pymysql.connect(host=DBHOST, user=DBUSER, password=DBPASS, database=DBNAME)
print('DataBases Connect Successfully! ')
cur = db.cursor()
cur.execute(sqlQuery, value1) # 插入value1的数据
cur.execute(sqlQuery, value2) # 插入value2的数据
cur.execute(sqlQuery, value3) # 插入value2的数据
db.commit()
print('Data Insert Successfully! ')
except pymysql.Error as e:
print('Data Insert Failure! '+str(e))
db.rollback() # 回滚
db.close() # 关闭数据库
在对应数据库内利用下面的语句查询输出结果为:
select * from student;
四、查询数据
- 编辑sql语句
- 使用fetchall()方法接收全部的返回结果行
DBHOST = 'localhost'
DBUSER = 'root'
DBPASS = 'shixian666'
DBNAME = 'hjh_db_000'
# 定义mysql语句
sqlQuery = "SELECT * FROM Student"
try:
# 连接数据库
db = pymysql.connect(host=DBHOST, user=DBUSER, password=DBPASS, database=DBNAME)
print('DataBases Connect Successfully! ')
cur = db.cursor()
cur.execute(sqlQuery)
results = cur.fetchall() # 利用fetchall()方法获取数据存入results
for row in results: # 对应行列依次读取打印
Name = row[0]
Email = row[1]
Age = row[2]
print('Name:%s,Email:%s,Age:%s' % (Name, Email, Age))
print('Data Query Successfully! ')
except pymysql.Error as e:
print("Data Query Failure! "+str(e))
db.close() # 关闭数据库
'''
输出结果为:
DataBases Connect Successfully!
Name:Mike,Email:147789@163.com,Age:20
Name:John,Email:654321@163.com,Age:20
Name:John,Email:011228@163.com,Age:19
Data Query Successfully!
'''
五、更新数据
- 编辑sql语句
- 编辑更新的信息
- 提交修改
import pymysql
DBHOST = 'localhost'
DBUSER = 'root'
DBPASS = 'shixian666'
DBNAME = 'hjh_db_000'
# 定义sql语句和value,相当于将Email = '011228@163.com'数据的Name改为'Tony'
sqlQuery = "UPDATE Student SET Name= %s WHERE Email= %s"
value = ('Tony', '011228@163.com')
try:
# 连接数据库
db = pymysql.connect(host=DBHOST, user=DBUSER, password=DBPASS, database=DBNAME)
print('DataBases Connect Successfully! ')
cur = db.cursor()
cur.execute(sqlQuery, value) # 执行
db.commit()
print('Data Update Successfully! ')
except pymysql.Error as e:
print("Data Update Failure! " + str(e))
# 发生错误时回滚
db.rollback()
db.close() # 关闭数据库
在MySQL中查看Student表中的数据(也可以利用第四部分内容):第三行错误的John被改成了Tony。
六、删除表中的数据
- 编辑sql语句
- 编辑更新的信息
DBHOST = 'localhost'
DBUSER = 'root'
DBPASS = 'shixian666'
DBNAME = 'hjh_db_000'
# 定义sql语句和value,相当于删除Name = 'Tony'的那一条数据
sqlQuery = "DELETE FROM Student where Name=%s"
value = ('Tony',)
try:
# 连接数据库
db = pymysql.connect(host=DBHOST, user=DBUSER, password=DBPASS, database=DBNAME)
print('DataBases Connect Successfully! ')
cur = db.cursor()
cur.execute(sqlQuery, value) #执行
db.commit()
print('Date Deleted Successfully! ')
except pymysql.Error as e:
print("Date Deleted failure! "+str(e))
db.close() # 关闭数据库
在MySQL中查看Student表中的数据(也可以利用第四部分内容):第三行的Tony被删除了。
七、删除一张表
- 编辑sql语句
- 提交修改
DBHOST = 'localhost'
DBUSER = 'root'
DBPASS = 'shixian666'
DBNAME = 'hjh_db_000'
# 定义sql语句
sqlQuery = 'DROP TABLE IF EXISTS Student'
try:
# 连接数据库
db = pymysql.connect(host=DBHOST, user=DBUSER, password=DBPASS, database=DBNAME)
print('DataBases Connect Successfully! ')
cur = db.cursor()
cur.execute(sqlQuery) # 执行
print('Table Deleted Successfully!')
except pymysql.Error as e:
print("Date Deleted failure! "+str(e))
db.close() # 关闭数据库
在MySQL中查看Student表(也可以利用第四部分内容):可以看到Student被删除了。
在MySQL中查看Student表(也可以利用第四部分内容):可以看到Student被删除了。
下面附上一位大佬对MySQL语句的整理,博客链接: link.