基于pymysql的MYSQL数据库操作
作者:互联网
一、机制
pymysql库的操作有点类似os.system(),需要直接给出mysql语句,会返回影响行数、数据等信息。
二、安装库及创建数据库、表
PyMySQL-0.9.3 (至少安装这个版本以上,否则会在connect时报错)
为进行试验,绕开一些权限的问题,创建了新的数据库及表
create database test_databases;
create table newtable(key1 char(20) NOT NULL,key2 int(11) NOT NULL);
这里实验的表名为newtable,具体信息如下:
三、基本操作
注意对一行操作和对N行操作的不同。
注意游标的移动及类型。
import pymysql
# 创建连接
conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='3gynj20J', db='test_databases')
# # 创建游标,返回元祖型数据
# cursor = conn.cursor()
# 创建游标,返回字典型数据
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
#增1
effect_row = cursor.execute("insert into newtable values('a',1)")
print(effect_row)
#增N
effect_row = cursor.executemany("insert into newtable values(%s,%s)",[('b',2),('c',3)])
print(effect_row)
#改
effect_row = cursor.execute("update newtable set key1='A' where key2=1")
print(effect_row)
# 注意mysql的fetch*会使cursor查一条少一条,游标自动向后移动,row_1和row_N是不重复的
#查1
cursor.execute("select * from newtable")
row_1 = cursor.fetchone()
print(row_1)
#查N
row_N = cursor.fetchmany(2)
#查all
row_all = cursor.fetchall()
print(row_1,row_N,row_all)
# print(cursor) # 是一个对象,不是list,<pymysql.cursors.Cursor object at 0x0000000002A51AC8>
# for i in cursor:
# print(i)
#查某个位置开始的几个
# cursor.scroll(1,mode='relative') # 相对当前位置移动
cursor.scroll(2,mode='absolute') # 相对绝对位置移动
row_1 = cursor.fetchone()
print(row_1)
四、常见报错
1、KeyError: 255
安装更高版本的pymysql。pip install --upgrade PyMySQL
https://www.jianshu.com/p/f69e846558ab
2、pymysql.err.OperationalError: (1142, "UPDATE command denied to user 'root'@'localhost' for table 'status_by_user'")
对于mysql安装时自带的数据库及表,可以进行查询,但无法修改的问题,可以自己创建数据库及表。
https://www.cnblogs.com/aylin/p/5770888.html
标签:数据库,effect,pymysql,cursor,newtable,MYSQL,print,row 来源: https://blog.csdn.net/weixin_41819299/article/details/104545764