pyMySQL python交互

Windows系统,MySQL,pyMySQL(#由于mysqldb在python2.X版本下才可使用,因此使用几乎相同的pyMySQL代替)

根据Alex的课程内容,代码如下:

import pymysql
conn =pymysql.connect(host='192.168.1.106',port=3306,user='root',passwd='123456',db='oldboydb')
    #创建连接,相当于创建socket
cursor =conn.cursor()
    #创建游标,即建立实例
effect_row =cursor.execute("update host set host ='1.1.1.2'")
    #执行SQL,返回收影响的行数

但是出现了错误:pymysql.err.ProgrammingError: (1146, "Table 'oldboydb.host' doesn't exist")。于是选择了另一种结构实现(使用字典进行连接参数的管理):

import pymysql.cursors

config={                          #待连接datebase属性对应字典               
    'host':'192.168.1.106',       #Ip地址
    'port':3306,                  #端口号
    'user':'root',                #表名
    'passwd':'123456',            #密码
    'db':'oldboydb',              #数据库
    # 'charset': 'utf8mb4',       #属性未知,可有可无
    # 'cursorclass': pymysql.cursors.DictCursor,    #属性未知,可有可无
}
connection =pymysql.connect(**config)    #创建连接,相当于创建socket
cursor =connection.cursor()              #创建游标,即建立实例
effect_row =cursor.execute('select * from student')    #execute方法:执行SQL,并返回收影响行数;+原生命令
                            
print(cursor.fetchone())     #fetchone方法:遍历一格
print(cursor.fetchone())
print(cursor.fetchall())     #etchall方法:遍历所有

data =[                            #待插入数据
    ('a1', 1, '2021-11-5', 'm'),
    ('b1', 2, '2020-11-5', 'w'),
    ('c1', 3, '2019-11-5', 'w'),
    ('d1', 4, '2018-11-5', 'm'),
]
cursor.executemany('insert into student(name,age,register_date,gender) values (%s,%s,%s,%s)',data)      #executemany方法:插入数据;+原生命令

connection.commit()       #默认开启事务,因此需要commit一下
connection.close()

在学习的过程中遇到的问题:

1、始终提示没有pymysql库以及方法(已下载)

2、连接失败:pymysql.err.OperationalError: (1130, "192.168.0.113' is not allowed to connect to this MySQL server") 

解决:

1、脑子抽抽了,创建.py文件名居然为包的名字

2、视频中grant all on *.* to 'root'@'%' identified by '123456'的grant授权方法已过时,参考了博客(MySQL 8报OperationalError: (1130, “XX‘ is not allowed to connect to this MySQL server“)的正确解决方法_qysh123的专栏-CSDN博客)后得以解决。需要注意的是,确认过端口号无误后便能够正常执行了,没有再进行后续的操作。

总结:pyMySQL python交互时,需要先授权,属性确定,然后python端通过指令完成对pyMySQL的操作。

PS:使用PyMySQL操作mysql数据库 - w_only - 博客园

上一篇:python爬虫-1.07-MaoyanSpider---持久化存MySQL储


下一篇:Vim编辑器-Editing a Little Faster