您的位置:

pymysql插入数据详解

pymysql是Python下一个能够在Python3.x版本中连接MySQL数据库的库,它是一个纯Python实现的MySQL客户端,支持Python3.x和Python2.x,完全兼容MySQLdb的API。

一、pymysql连接远程数据库

使用pymysql连接远程数据库需要如下步骤:

1、首先,需要在远程MySQL数据库中创建用户,并给该用户授权:


-- 创建用户
CREATE USER 'newuser'@'%' IDENTIFIED BY 'password';

-- 给用户授权
GRANT ALL PRIVILEGES ON *.* TO 'newuser'@'%';

2、远程MySQL数据库需要开启远程访问功能,通过修改其配置文件来实现:


# 打开MySQL配置文件my.cnf
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

# 注释掉下面这一行
# bind-address        = 127.0.0.1

# 重启MySQL服务
sudo service mysql restart

3、编写Python代码连接远程MySQL数据库:


import pymysql

# 建立连接
db = pymysql.connect(host="host_ip", port=port, user="user_name", password="password", database="database_name")

# 创建游标对象
cursor = db.cursor()

# 执行SQL语句
cursor.execute("SELECT VERSION()")

# 获取数据库版本号
data = cursor.fetchone()

# 输出数据
print("MySQL 版本号为:{}".format(data))

# 关闭连接
db.close()

二、pymysql查询出来的数据格式

pymysql查询出的数据格式为元组(tuple),元组中的值对应查询结果中一行的值,可以通过遍历元组获取所有行的结果。


import pymysql

db = pymysql.connect(host="host_ip", port=port, user="user_name", password="password", database="database_name")

# 创建游标对象
cursor = db.cursor()

# 执行SQL语句
cursor.execute("SELECT * FROM table_name")

# 获取查询结果
data = cursor.fetchall()

# 遍历查询结果
for row in data:
    print(row)

# 关闭连接
db.close()

三、pymysql更改数据

pymysql通过执行SQL语句来更改数据库中的数据,可以使用INSERT、UPDATE和DELETE语句,同时还可以使用事务来保证更改数据的原子性。

以下代码演示了使用pymysql插入数据的过程:


import pymysql

db = pymysql.connect(host="host_ip", port=port, user="user_name", password="password", database="database_name")

# 创建游标对象
cursor = db.cursor()

# SQL语句
sql = "INSERT INTO table_name (column1, column2, column3) VALUES (%s, %s, %s)"

# 数据
values = [('value1', 'value2', 'value3'), ('value4', 'value5', 'value6')]

try:
    # 开始事务
    db.begin()

    # 执行SQL语句
    cursor.executemany(sql, values)

    # 提交事务
    db.commit()

    # 获取受影响的行数
    print("成功插入了%d条数据" % cursor.rowcount)

except Exception as e:
    # 回滚事务
    db.rollback()

    print("插入数据失败,原因:{}".format(e))

finally:
    # 关闭连接
    db.close()

四、pymysql查询数据

pymysql通过执行SELECT语句来查询数据库中的数据,可以使用WHERE子句来筛选数据,同时还可以使用ORDER BY子句来对查询结果进行排序。


import pymysql

db = pymysql.connect(host="host_ip", port=port, user="user_name", password="password", database="database_name")

# 创建游标对象
cursor = db.cursor()

# SQL语句
sql = "SELECT * FROM table_name WHERE column1 = %s ORDER BY column2 DESC"

# 数据
value = 'value'

try:
    # 执行SQL语句
    cursor.execute(sql, value)

    # 获取查询结果
    data = cursor.fetchall()

    # 遍历查询结果
    for row in data:
        print(row)

except Exception as e:
    print("查询数据失败,原因:{}".format(e))

finally:
    # 关闭连接
    db.close()

五、pymysql连接数据库

pymysql连接MySQL数据库非常简单,只需要调用connect()方法即可,该方法支持多个参数,包括host、port、user、passowrd和database等参数。


import pymysql

# 连接MySQL数据库
db = pymysql.connect(host='localhost', port=3306, user='root', password='password', database='test')

# 关闭连接
db.close()

六、pymysql链接数据库

pymysql链接MySQL数据库时,如果出现用户名或者密码错误、端口号不匹配等问题时,会出现错误提示信息。


import pymysql

try:
    # 连接MySQL数据库
    db = pymysql.connect(host='localhost', port=3307, user='root', password='123456', database='test')

except Exception as e:
    print("连接数据库失败,原因:{}".format(e))

七、pymysql获取字段和数据

pymysql可以从查询结果中获取字段和数据,通过description属性获取查询结果的字段信息,通过fetchall方法获取查询结果的数据。


import pymysql

# 连接MySQL数据库
db = pymysql.connect(host='localhost', port=3306, user='root', password='password', database='test')

# 创建游标对象
cursor = db.cursor()

# SQL语句
sql = "SELECT * FROM table_name"

try:
    # 执行SQL语句
    cursor.execute(sql)

    # 获取字段信息
    fields = cursor.description

    # 打印字段信息
    for field in fields:
        print(field[0], end='\t')

    print()

    # 获取查询结果
    data = cursor.fetchall()

    # 遍历查询结果
    for row in data:
        print(row)

except Exception as e:
    print("获取字段和数据失败,原因:{}".format(e))

finally:
    # 关闭连接
    db.close()

八、pymysql修改数据库数据

pymysql通过执行UPDATE和DELETE语句来修改数据库中的数据,可以使用WHERE子句来修改和删除指定数据。


import pymysql

# 连接MySQL数据库
db = pymysql.connect(host='localhost', port=3306, user='root', password='password', database='test')

# 创建游标对象
cursor = db.cursor()

try:
    # 开始事务
    db.begin()

    # 修改数据
    sql = "UPDATE table_name SET column1 = %s WHERE column2 = %s"
    value = ('new_value', 'value')

    cursor.execute(sql, value)

    # 提交事务
    db.commit()

    print("数据修改成功!")

except Exception as e:
    # 回滚事务
    db.rollback()
    
    print("数据修改失败,原因:{}".format(e))

finally:
    # 关闭连接
    db.close()

九、pymysql连接数据库失败

如果pymysql连接MySQL数据库时出现连接超时、连接拒绝、连接错误等问题时,会出现错误提示信息。


import pymysql

try:
    # 连接MySQL数据库
    db = pymysql.connect(host='localhost', port=3307, user='root', password='123456', database='test', connect_timeout=3)

except Exception as e:
    print("连接MySQL数据库失败,原因:{}".format(e))

总结

本篇文章主要对pymysql插入数据进行了详细的讲解,通过对连接远程数据库、查询出来的数据格式、更改数据、查询数据、连接数据库、链接数据库、获取字段和数据、修改数据库数据以及连接数据库失败这几个方面进行了详细的阐述,希望能够对大家使用pymysql插入数据有所帮助。