菜鸟教程:Python3 MySQL 数据库连接 – PyMySQL 驱动 | 菜鸟教程
学习教程(视频):Python连接MySQL数据库【趣学Python】_哔哩哔哩_bilibili
学习教程(文件):Python连接MySQL数据库_Python全栈之巅-CSDN博客_python 连接mysql数据库
数据库连接:
连接数据库前,请先确认以下事项:
- 您已经创建了数据库 TESTDB.
- 在TESTDB数据库中您已经创建了表 EMPLOYEE
- EMPLOYEE表字段为 FIRST_NAME, LAST_NAME, AGE, SEX 和 INCOME。
- 连接数据库TESTDB使用的用户名为 "testuser" ,密码为 "test123",你可以可以自己设定或者直接使用root用户名及其密码,Mysql数据库用户授权请使用Grant命令。
- 在你的机子上已经安装了 Python MySQLdb 模块。
- 如果您对sql语句不熟悉,可以访问菜鸟教程:SQL 教程 | 菜鸟教程
?导入库
import pymysql
连接数据库
DBHOST = 'localhost'
DBUSER = '用户名'
DBPASS = '密码'
DBNAME = '连接名称'
try except捕获异常
try:
db = pymysql.connect(host=DBHOST,user=DBUSER, password=DBPASS, database=DBNAME)
print('数据库连接成功!')
except pymysql.Error as e:
print('数据库连接失败'+str(e))
?创建一张新表
# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()
# 使用 execute() 方法执行 SQL 查询
# cursor.execute("SELECT VERSION()")
# 创建表之前先检查是否存在,如果存在则删除
cursor.execute('DROP TABLE IF EXISTS Student')
# 编辑sql语句
#sqlQuery = "CREATE TABLE Student(Name CHAR(20) NOT NULL ,Email CHAR(20),Age int )"
sqlQuery = "CREATE TABLE Student(Name CHAR(20) NOT NULL ,Age CHAR(20),Major CHAR(20) ,Num CHAR(20))ENGINE=InnoDB " \
"DEFAULT CHARSET=gbk; "
cursor.execute(sqlQuery)
?此处注意编码格式:DEFAULT CHARSET=gbk 如果没有这个语句,向数据库中插入中文会报错?
参考教程:解决Python往MySQL插入中文时报错的问题_aaa2549769750的博客-CSDN博客
?
向表中插入数据
# 编辑sql语句
sqlQuery=" INSERT INTO Student (Name, Age, Major, Num) VALUE (%s,%s,%s,%s) "
# 编辑准备插入的值
value=('小西','20级','移动软件','123456')
# 执行sql语句
try:
cursor.execute(sqlQuery,value)
db.commit()
print('数据插入成功!')
except pymysql.Error as e:
print("数据插入失败:"+str(e) )
db.rollback()
查询表中的数据
Python查询Mysql使用 fetchone() 方法获取单条数据, 使用fetchall() 方法获取多条数据。
- fetchone():?该方法获取下一个查询结果集。结果集是一个对象
- fetchall():?接收全部的返回结果行.
- rowcount:?这是一个只读属性,并返回执行execute()方法后影响的行数。
实例:
# 编辑sql语句
sqlQuery = "SELECT * FROM Student"
# 使用fetchall()方法接收全部的返回结果行
try:
cursor.execute(sqlQuery)
results=cursor.fetchall()
for row in results:
if row[0]=='小西':
name=row[0]
age=row[1]
major=row[2]
num=row[3]
print('Name:%s,age:%s,major:%s,num:%s'%(name,age,major,num))
except pymysql.Error as e:
print("数据查询失败:"+str(e))
更新表中的数据
#编辑sql语句
sqlQuery = "UPDATE Student SET Name= %s WHERE Name=%s"
#编辑更新的信息
value = ('John', 'updated name')
#提交修改
try:
cur.execute(sqlQuery, value)
db.commit()
print('数据更新成功!')
except pymysql.Error as e:
print("数据更新失败:"+str(e))
# 发生错误时回滚
db.rollback()
删除表中的数据
#编辑sql语句
sqlQuery = "DELETE FROM Student where Name=%s"
#编辑更新的信息
value = ('John')
#提交修改
try:
cur.execute(sqlQuery, value)
db.commit()
print('Date Deleted Successfully')
except pymysql.Error as e:
print("数据删除失败:"+str(e))
# 发生错误时回滚
db.rollback()
删除一张表
#编辑sql语句
sqlQuery='DROP TABLE IF EXISTS Student'
#提交修改
cur.execute(sqlQuery)
print('表删除成功!')
关闭数据库连接
# 关闭数据库连接
db.close()
|