python交互数据库

本篇博客向大家介绍如何利用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中文文档,祝大家学习进步!

猜你喜欢

转载自blog.csdn.net/weixin_42494845/article/details/105237862