ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

基于pymysql的MYSQL数据库操作

2020-03-16 21:39:17  阅读:391  来源: 互联网

标签:数据库 effect pymysql cursor newtable MYSQL print row


一、机制

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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有