pymysql出现了以下的错误怎么办?

时间:2022-02-11 05:47:27 投诉/举报
pymysql出现了以下的错误怎么办? 1 python-module 'pymysql' has no attribute 'connect' 一出错 我本能的想去看下是不是我没连接成功 然后 pip3 install pymysql 不要起import的包名作为文件名啊!!! 因此,我总结了下pymysql的基本使用 一、PyMySQL介绍 PyMySQL是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中是使用mysqldb。 PyMySQL安装 1 pip3 install pymysql 创建链接的基本使用 # 导入pymysql模块 import pymysql # 连接database conn = pymysql.connect(     host=“你的数据库地址”,     user=“用户名”,password=“密码”,     database=“数据库名”,     charset=“utf8”) # 得到一个可以执行SQL语句的光标对象 cursor = conn.cursor()  # 执行完毕返回的结果集默认以元组显示 # 得到一个可以执行SQL语句并且将结果作为字典返回的游标 #cursor = conn.cursor(cursor=pymysql.cursors.DictCursor) # 定义要执行的SQL语句 sql = """ CREATE TABLE USER1 ( id INT auto_increment PRIMARY KEY , name CHAR(10) NOT NULL UNIQUE, age TINYINT NOT NULL )ENGINE=innodb DEFAULT CHARSET=utf8;  #注意:charset='utf8' 不能写成utf-8 """ # 执行SQL语句 cursor.execute(sql) # 关闭光标对象 cursor.close() # 关闭数据库连接 conn.close() 在建链接之前,我们需要做好一些前期工作:建库建表 下面例子中  我将使用我建好的库:db= 'xing' 建好的userinfo表 简单验证功能 + View Code 输出结果: 但是会有以下问题:输入的SQL 语句被注释了 或者是 这个时候之后 我们可以这样解决 execute帮我们做字符串拼接 # 将以下代码 sql="select * from userinfo where name='%s' and password='%s'" %(user,pwd) res=cursor.execute(sql) # 改为 sql="select * from userinfo where name=%s and password=%s" #%s需要去掉引号,pymysql会自动加上 res=cursor.execute(sql,[user,pwd]) 输出结果: 二、增删改查操作 添加多条数据 import pymysql conn = pymysql.connect(     host='192.168.0.103',     port=3306,     user='root',     password='123',     database='xing',     charset='utf8' ) # 获取一个光标 cursor = conn.cursor() # 定义要执行的sql语句 sql = 'insert into userinfo(user,pwd) values(%s,%s);' data = [     ('july', '147'),     ('june', '258'),     ('marin', '369') ] # 拼接并执行sql语句 cursor.executemany(sql, data) # 涉及写操作要注意提交 conn.commit() # 关闭连接 cursor.close() conn.close() 输出结果: 插入单条数据 import pymysql conn =pymysql.connect(     host ='192.168.0.103',     port = 3306,     user = 'root',     password ='123',     database ='xing',     charset ='utf8' ) cursor =conn.cursor()  #获取一个光标 sql ='insert into userinfo (user,pwd) values (%s,%s);' name = 'wuli' pwd = '123456789' cursor.execute(sql, [name, pwd]) conn.commit() cursor.close() conn.close() 输出结果: 获取最新插入数据 (最后一条) import pymysql # 建立连接 conn = pymysql.connect(     host="192.168.0.103",     port=3306,     user="root",     password="123",     database="xing",     charset="utf8" ) # 获取一个光标 cursor = conn.cursor() # 定义将要执行的SQL语句 sql = "insert into userinfo (user, pwd) values (%s, %s);" name = "wuli" pwd = "123456789" # 并执行SQL语句 cursor.execute(sql, [name, pwd]) # 涉及写操作注意要提交 conn.commit() # 关闭连接 # 获取最新的那一条数据的ID last_id = cursor.lastrowid print("最后一条数据的ID是:", last_id) cursor.close() conn.close() 输出结果为:(因为我之前插入多条记录时,多运行了两次,所有结果下面的这个) 删除操作 import pymysql # 建立连接 conn = pymysql.connect(     host="192.168.0.103",     port=3306,     user="root",     password="123",     database="xing",     charset="utf8" ) # 获取一个光标 cursor = conn.cursor() # 定义将要执行的SQL语句 sql = "delete from userinfo where user=%s;" name = "june" # 拼接并执行SQL语句 cursor.execute(sql, [name]) # 涉及写操作注意要提交 conn.commit() # 关闭连接 cursor.close() conn.close() 输出结果是: 更改数据 import pymysql # 建立连接 conn = pymysql.connect(     host="192.168.0.103",     port=3306,     user="root",     password="123",     database="xing",     charset="utf8" ) # 获取一个光标 cursor = conn.cursor() # 定义将要执行的SQL语句 sql = "update userinfo set pwd=%s where user=%s;" # 拼接并执行SQL语句 cursor.execute(sql, ["july", "july"]) # 涉及写操作注意要提交 conn.commit() # 关闭连接 cursor.close () conn.close () 查询数据 fetch数据 + View Code 1 2 3 4 5 6 # 可以获取指定数量的数据 cursor.fetchmany(3) # 光标按绝对位置移动1 cursor.scroll(1, mode="absolute") # 光标按照相对位置(当前位置)移动1 cursor.scroll(1, mode="relative") 数据回滚 + View Code