天涯论坛

 找回密码
 立即注册
搜索
查看: 57|回复: 8

Python-Operation_MySQL

[复制链接]

3043

主题

2万

回帖

9606万

积分

论坛元老

Rank: 8Rank: 8

积分
96065868
发表于 2024-8-18 04:57:50 | 显示全部楼层 |阅读模式

操作流程

安装 MySQL 数据库pymysql 模块安装与运用获取数据库的连接执行 sql 语句或存储过程关闭数据库连接

安装 MySQL 数据库

重视 安装过程咱们必须经过开启管理员权限来安装,否则会因为权限不足引起没法安装。

1、Linux 上安装 MySQL

1、检测系统是不是自带安装 MySQL: rpm -qa | grep mysql 2、倘若查看到系统有安装 MySQL,那能够选取进行卸载:rpm -e mysql…  # 普通删除模式 rpm -e --nodeps mysql…  # 强力删除模式,倘若运用上面命令删除时,提示有依赖的其它文件,则用该命令能够对其进行强力删除3、安装 MySQL

首要必须先下载 MySQL 安装包,官网下载位置 下载对应版本就可,或直接在网上拉取并安装:

wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm # 获取安装包 rpm -ivh mysql-community-release-el7-5.noarch.rpm # 安装 yum update yum install mysql-server

权限设置:

chown mysql:mysql -R /var/lib/mysql

初始化 MySQL:

mysqld --initialize

起步 MySQL:

systemctlstart mysqld

查看 MySQL 运行状态:

systemctl status mysqld 4、修改默认秘码

Mysql安装成功后,默认的root用户秘码为空,你能够运用以下命令来创建root用户的秘码

mysqladmin -u root password "new_password";

登陆:

mysql-uroot -pnew_password

2、Windows 上安装

1、下载

Windows 上安装 MySQL 相对来讲会较为简单,5.7 版本下载位置

下载完后,将 zip 包解压到自定义目录,这儿我将解压后的文件夹放在 D:\Software\MySQL\mysql-5.7.28 下;

2、配置

接下来必须配置下 MySQL 的配置文件,打开刚才解压的文件夹 D:\Software\MySQL\mysql-5.7.28 ,在该文件夹下创建 my.ini 配置文件,编辑 my.ini 配置以下基本信息:

[client] # 设置mysql客户端默认字符集 default-character-set=utf8 [mysqld] # 设置3306端口 port = 3306 # 设置mysql的安装目录 basedir=D:\\Software\\MySQL\\mysql-5.7.28 # 设置 mysql数据库的数据的存放目录,MySQL 8+ 不必须以下配置,系统自己生成就可,否则有可能报错 datadir=D:\\Software\\MySQL\\SqlData# 准许最大连接数 max_connections=20 # 服务端运用的字符集默认为8比特编码的latin1字符集 character-set-server=utf8 # 创建新表时将运用的默认存储引擎 default-storage-engine=INNODB

注意:还必须创建数据库数据目录,初始化数据库的时候必须初始化数据目录 在 Mysql 安装目录下创建数据目录 datadir=D:\\Software\\MySQL\\SqlData

3、起步数据库

以管理员身份打开 cmd 命令行工具,切换至 Mysql 安装目录:

cd D:\Software\MySQL\mysql-5.7.28\bin

初始化数据库:

mysqld --initialize --console

执行完成后,会输出 root 用户的初始默认秘码,如下所示:

A temporary password is generated for root@localhost: feKm1E/-ExWM

“feKm1E/-ExWM” 即为 Mysql 初始秘码

输入以下安装命令:

mysqld install

初始化数据目录

mysqld --initialize-insecure

起步 Mysql:

net start mysql

登陆:

mysql -uroot -p

刚安装好的数据库 默认秘码是空,可按照自己必须修改。

windows 下修改 mysql 秘码

mysql> select User from user;+---------------+ | User | +---------------+ | mysql.session | | mysql.sys | | root | +---------------+ 3 rows in set (0.00 sec) mysql> mysql> update mysql.user set authentication_string=password(123456) where user=root;Query OK, 1 row affected, 1 warning (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 1 mysql> flush privileges; # 立即生效 Query OK, 0 rows affected (0.01 sec) mysql> quit # 退出重新登陆就可

3、创建数据库

创建数据库:

create database test_db;

查看数据库:

mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sys | | test_db | +--------------------+ 5 rows in set (0.00 sec) mysql> use test_db; Database changed

pymysql 模块安装与数据 CURD

1、安装

PyMySQL 模块运用 pip命令进行安装:

pip3 install PyMySQL

假如系统不支持 pip 命令,能够运用以下方式安装:

$ git clone https://github.com/PyMySQL/PyMySQL $ cd PyMySQL/ $python3 setup.py install

2、pymysql 连接数据库

pymysql .connect 函数:连接上数据库

# 导入模块 import pymysql # 打开数据库连接 conn = pymysql.connect( host="127.0.0.1", user="root", password="123456", database="test_db", charset="utf8") print(conn) print(type(conn))

输出结果表示如下:表面数据库连接成功

<pymysql.connections.Connection object at 0x00000000022A54A8> <class pymysql.connections.Connection>

运用 pymysql 的 connect() 办法连接数据库,connect 参数解释如下:

host:MySQL服务的位置,若数据库在本地上,运用 localhost 127.0.0.1。倘若在其它的服务器上,则写对应的 IP位置port:服务的端口号,默认为3306,不写则为默认值。user:登录数据库的用户名passwd:登录 MySQL 的秘码db:数据库名charset:设置为 utf8 编码,处理存汉字乱码问题

conn.cursor():获取游标

倘若要操作数据库,光连接数据是不足的,咱们必要拿到操作数据库的游标,才可进行后续的操作,游标的重点功效是用来接收数据库操作后的返回结果,例如读取数据、添加数据。经过获取到的数据库连接实例 conn 下的 cursor() 办法来创建游标,实例如下:

# 导入模块 import pymysql # 打开数据库连接 conn = pymysql.connect( host="127.0.0.1", user="root", password="123456", database="test_db", charset="utf8") # print(conn) # print(type(conn)) # 获取连接下的游标 cursor_test = conn.cursor() print(cursor_test)

输出结果为:

<pymysql.cursors.Cursor object at 0x000000000A544B00>

cursor 返回一个游标实例对象,其中包括非常多操作数据的办法,如执行sql语句,sql 执行命令:execute()和executemany()

execute(query,args=None):

函数功效:执行单条的sql语句,执行成功后返回受影响的行数参数说明:query:要执行的sql语句,字符串类型args:可选的序列或映射,用于query的参数值。倘若args为序列,query中必要运用%s做占位符;倘若args为映射,query中必要运用%(key)s做占位符

executemany(query,args=None):

函数功效:批量执行sql语句,例如批量插进数据,执行成功后返回受影响的行数参数说明:query:要执行的sql语句,字符串类型args:嵌套的序列或映射,用于query的参数值

其他游标对象如下表:

叫作描述close()关闭游标,之后游标不可用fetchone()返回一条查找结果fetchall()返回所有查找结果fetchmany([size])返回size条查找结果nextset()移动到下一条结果scroll(value,mode=’relative’)移动游标到指定行,倘若mode=’relative’,则暗示从当前行移动value条,倘若mode=‘absolute’,则暗示从结果集的第1行移动value条

完整数据库连接操作实例如下:

# 导入模块 import pymysql # 打开数据库连接 conn = pymysql.connect( host="127.0.0.1", user="root", password="123456", database="test_db", charset="utf8") # print(conn) # print(type(conn)) # 获取连接下的游标cursor_test = conn.cursor()print(cursor_test) # 运用 execute() 办法执行 SQL 查找查找数据库版本 cursor_test.execute("SELECT VERSION()") # 运用 fetchone() 办法返回一条数据. data = cursor_test.fetchone() print("Database version : %s " % data) # 关闭数据库连接 conn.close()

以上结果输出为:

Database version : 5.7.28

3、创建表

创建表代码如下:

import pymysql # 打开数据库连接conn = pymysql.connect( host="127.0.0.1", user="root", password="123456", database="test_db", charset="utf8") # 获取连接下的游标 cursor_test = conn.cursor() # 运用 execute() 办法执行 SQL,倘若表存在则删除 cursor_test.execute("DROP TABLE IF EXISTS EMPLOYEE") # 运用预处理语句创建表 sql = """CREATE TABLE user1 ( FIRST_NAME CHAR(20) NOT NULL, LAST_NAME CHAR(20), AGE INT, SEX CHAR(1), INCOME FLOAT )""" cursor_test.execute(sql) # 关闭数据库连接 conn.close()

如下所示数据库表创建成功:

mysql> desc user1; +------------+----------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +------------+----------+------+-----+---------+-------+ | FIRST_NAME | char(20) | NO | | NULL | | | LAST_NAME | char(20) | YES | | NULL | | | AGE | int(11) | YES | |NULL| | | SEX | char(1) | YES | | NULL | | | INCOME | float | YES | | NULL | | +------------+----------+------+-----+---------+-------+ 5 rows in set (0.00 sec)

3、插入数据

插进数据实现代码:

import pymysql # 打开数据库连接 conn = pymysql.connect( host="127.0.0.1", user="root", password="123456", database="test_db", charset="utf8") # 获取连接下的游标 cursor_test = conn.cursor() # 运用预处理语句创建表 sql = """INSERT INTO user1(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME) VALUES (Fei, Fei, 20, M, 1000)""" try: # 执行sql语句 cursor_test.execute(sql) # 提交到数据库执行 conn.commit() except: # 倘若出现错误则回滚 conn.rollback() # 关闭数据库连接 conn.close()

插进数据结果:

mysql> select * from user1; +------------+-----------+------+------+--------+| FIRST_NAME | LAST_NAME | AGE | SEX | INCOME |+------------+-----------+------+------+--------+| Fei | Fei | 20 | M | 1000 | +------------+-----------+------+------+--------+ 1 row in set (0.00 sec)

4、查找数据

Python查找Mysql运用 fetchone() 办法获取单条数据, 运用fetchall() 办法获取多条数据。

fetchone(): 该办法获取下一个查找结果集。结果集是一个对象fetchall(): 接收所有的返回结果行.rowcount: 这是一个只读属性,并返回执行 execute()办法后影响的行数。

查找数据代码如下:

importpymysql# 打开数据库连接 conn = pymysql.connect( host="127.0.0.1", user="root", password="123456", database="test_db", charset="utf8") # 获取连接下的游标 cursor_test = conn.cursor() sql = """ select * from user1""" try: # 执行 sql 语句 cursor_test.execute(sql) # 表示出所有数据data_result = cursor_test.fetchall()for row in data_result: fname = row[0] lname = row[1] age = row[2] sex = row[3] income = row[4] # 打印结果 print("fname=%s,lname=%s,age=%s,sex=%s,income=%s" % \ (fname, lname, age, sex, income)) except: print("Error: unable to fetch data") # 关闭数据库连接 conn.close()

输出结果:

fname=Fei,lname=Fei,age=20,sex=M,income=1000.0

5、数据库表更新操作

# 导入模块 import pymysql # 打开数据库连接 conn = pymysql.connect( host="127.0.0.1", user="root", password="123456", database="test_db", charset="utf8") # print(conn) # print(type(conn)) # 获取连接下的游标 cursor_test = conn.cursor() sql = "UPDATE user1 SET AGE = AGE + 1 WHERE SEX = %c" % (M) try: # 执行SQL语句 cursor_test.execute(sql) # 提交到数据库执行 conn.commit() except: # 出现错误时回滚 conn.rollback() # 关闭数据库连接 conn.close()

6、删除操作

# 导入模块 import pymysql # 打开数据库连接 conn = pymysql.connect( host="127.0.0.1", user="root", password="123456", database="test_db", charset="utf8") # print(conn) # print(type(conn)) # 获取连接下的游标 cursor_test = conn.cursor() sql = "DELETE * FROM user1" try: # 执行SQL语句 cursor_test.execute(sql) # 提交到数据库执行 conn.commit() except: # 出现错误时回滚 conn.rollback() # 关闭数据库连接 conn.close()

7、错误处理

DB API中定义了有些数据库操作的错误及反常,下表列出了这些错误和反常:





上一篇:9个高质量python学习网站
下一篇:python123 考试中的 江湖秘籍
回复

使用道具 举报

0

主题

1万

回帖

1

积分

新手上路

Rank: 1

积分
1
发表于 2024-8-22 11:20:37 | 显示全部楼层
你的见解独到,让我受益匪浅,期待更多交流。
回复

使用道具 举报

0

主题

1万

回帖

1

积分

新手上路

Rank: 1

积分
1
发表于 2024-8-28 16:36:36 | 显示全部楼层
我深感你的理解与共鸣,愿对话长流。
回复

使用道具 举报

0

主题

1万

回帖

1

积分

新手上路

Rank: 1

积分
1
发表于 2024-9-7 04:50:00 | 显示全部楼层
在遇到你之前,我对人世间是否有真正的圣人是怀疑的。
回复

使用道具 举报

3133

主题

2万

回帖

9996万

积分

论坛元老

Rank: 8Rank: 8

积分
99968644
发表于 2024-9-30 07:29:44 | 显示全部楼层
外贸B2B平台有哪些?
回复

使用道具 举报

3133

主题

2万

回帖

9996万

积分

论坛元老

Rank: 8Rank: 8

积分
99968644
发表于 2024-10-4 09:36:25 | 显示全部楼层
网站建设seio论坛http://www.fok120.com/
回复

使用道具 举报

3133

主题

2万

回帖

9996万

积分

论坛元老

Rank: 8Rank: 8

积分
99968644
发表于 2024-10-5 12:44:39 | 显示全部楼层
期待与你深入交流,共探知识的无穷魅力。
回复

使用道具 举报

3043

主题

2万

回帖

9606万

积分

论坛元老

Rank: 8Rank: 8

积分
96065868
 楼主| 发表于 2024-10-21 20:45:33 | 显示全部楼层
i免费外链发布平台 http://www.fok120.com/
回复

使用道具 举报

3068

主题

2万

回帖

9913万

积分

论坛元老

Rank: 8Rank: 8

积分
99138956
发表于 2024-10-25 06:17:55 | 显示全部楼层
回顾历史,我们不难发现:无数先辈用鲜血和生命铺就了中华民族复兴的康庄大道。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

站点统计|Archiver|手机版|小黑屋|天涯论坛 ( 非经营性网站 )|网站地图

GMT+8, 2024-11-22 13:39 , Processed in 0.217505 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.