本篇博客向大家介绍如何利用python对MySQL数据库进行增删改查。
MySQL简介
MySQL是一种开源免费的且最流行的关系型数据库管理系统之一,关系型数据库将数据保存在不同的表中以增加速度并提高了灵活性。
MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。
MySQL使用 C和 C++编写,⽀持多种操作系统,并为多种编程语言提供了 API。
MySQL的安装这里就不详细说了,并不是本文的主题。
这里需要提醒的一点是(这里以Ubantu下安装的MySQL为例):MySQL默认不允许远程连接。
我们需要设置MySQL允许远程访问,首先编辑文件
/etc/mysql/mysql.conf.d/mysqld.cnf
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
注释掉bind-address = 127.0.0.1
保存退出后进入mysql服务,执行授权命令:
grant all on *.* to root@'%' identified by '你的密码' with grant option;
flush privileges;
然后执行quit命令退出mysql服务,执行如下命令重启mysql:
service mysql restart
这样,我们的数据库就可以被远程连接了
PyMySQL
PyMySQL是在 Python3.x 版本中用于连接 MySQL 服务器的一个第三方模块,安装很简单,只需要一行命令
pip install pymysql
pymysql这个库实现了事务.
1. 创建链接信息
2. 进行链接
3. 创建游标对象
4. 使用游标对象来执行SQL操作
5. 查看执行结果
6. 关闭游标
7. 关闭链接
连接数据库
#导入pymysql模块
import pymysql
#配置信息
db_config = {
'host': '你的主机地址', # 需要连接ip
'port': 3306, # 默认端口3306
'user': 'mysql登录用户名', # 用户名.
'password': 'mysql登录密码', # 用户密码
'db': '连接的数据库名', # 进入的数据库名.
'charset': 'utf8' # 编码方式.
}
#连接数据库
conn = pymysql.connect(**db_config)
#得到一个可执行SQL语句的光标对象
cur = conn.cursor() # create cursor.
创建表
这里创建class表,包含字段id(主键),姓名,年龄,性别
try:
sql = 'CREATE TABLE class(id INT auto_increment PRIMARY KEY ,name CHAR(10) NOT NULL UNIQUE,age INT NOT NULL,sex CHAR(10) NOT NULL) DEFAULT CHARSET=utf8;'
rv = cur.execute(sql)
except Exception as e:
print(e)
finally:
conn.commit()# 提交修改的数据.
cur.close()# 关闭游标.
conn.close() # 关闭conn.
增删改查
增删改后都需要commit
插入数据
try:
sql = 'INSERT INTO class(name,age,sex) VALUES("tina",20,"female");'
rv = cur.execute(sql)
except Exception as e:
print(e)
finally:
conn.commit()# 提交修改的数据.
cur.close()# 关闭游标.
conn.close() # 关闭conn.
插入多条数据
try:
sql = 'INSERT INTO class(name,age,sex) VALUES(%s,%s,%s);'
data = (("jack","19","male"),("judi","21","famale"))
rv = cur.executemany(sql,data)
except Exception as e:
print(e)
finally:
conn.commit()# 提交修改的数据.
cur.close()# 关闭游标.
conn.close() # 关闭conn.
修改数据
将judi的age修改为18
try:
sql = "update class set age=18 where name='judi';"
rv = cur.execute(sql)
except Exception as e:
print(e)
finally:
conn.commit()# 提交修改的数据.
cur.close()# 关闭游标.
conn.close() # 关闭conn.
删除数据
删除名字为judi的行
try:
sql = "delete from class where name='judi';"
rv = cur.execute(sql)
except Exception as e:
print(e)
finally:
conn.commit()# 提交修改的数据.
cur.close()# 关闭游标.
conn.close() # 关闭conn.
查询
查询class表中数据并打印
try:
sql = 'SELECT * FROM class'
rv = cur.execute(sql)
#获取数据
resp = cur.fetchall()
for entry in resp:
print(entry)
except Exception as e:
print(e)
finally:
conn.commit()# 提交修改的数据.
cur.close()# 关闭游标.
conn.close() # 关闭conn.
以上就是今天博主给大家分享的内容了,只涉及到了简单的增删改查,更复杂的操作需要大家去阅读mysql中文文档,祝大家学习进步!