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插入数据有所帮助。