pymysql语法_PyMySQL的基本使用

昨天在李哥帮忙检验我学习效果的时候

我使用pymysql出现了以下的错误

python-module 'pymysql' has no attribute 'connect'

一出错 我本能的想去看下是不是我没连接成功 然后 pip3 install pymysql

不要起import的包名作为文件名啊!!!

因此,我总结了下pymysql的基本使用

一、PyMySQL介绍

PyMySQL是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中是使用mysqldb。

PyMySQL安装

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表

简单验证功能

# pip3 install pymysql

import pymysql

user=input('user>>: ').strip()

pwd=input('password>>: ').strip()

# 建立链接

conn=pymysql.connect(

host='192.168.0.103',#我的IP地址

port=3306, # 不是字符串不需要加引号。

user='root',

password='123',

db='xing',

charset='utf8'

)

# 拿到游标

cursor=conn.cursor()

# 执行sql语句

sql='select * from userinfo where user = "%s" and pwd="%s"' % (user, pwd)

print(sql)

res=cursor.execute(sql)

print(res)

cursor.close()

conn.close()

# 进行判断

if res:

print('登录成功')

else:

print('登录失败')

输出结果:

但是会有以下问题:输入的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数据

import pymysql

conn = pymysql.connect (

host='192.168.0.103',

port=3306,

user='root',

password='123',

database='xing',

charset='utf8'

)

# 获取一个光标

cursor = conn.cursor(cursor=pymysql.cursors.DictCursor) # 返回字典数据类型

# 定义将要执行的sql语句

sql = 'select user,pwd from userinfo;'

# 拼接并执行sql语句

cursor.execute(sql)

# 取到查询结果

ret1 = cursor.fetchone() # 取一条

ret2 = cursor.fetchmany(3) # 取三条

ret3 = cursor.fetchone() # 取一条

cursor.close()

conn.close()

print(ret1)

print(ret2)

print(ret3)

# 可以获取指定数量的数据

cursor.fetchmany(3)

# 光标按绝对位置移动1

cursor.scroll(1, mode="absolute")

# 光标按照相对位置(当前位置)移动1

cursor.scroll(1, mode="relative")

数据回滚

import pymysql

# 建立连接

conn = pymysql.connect(

host="192.168.0.103",

port=3306,

user="root",

password="123",

database="xing",

charset="utf8"

)

# 获取一个光标

cursor = conn.cursor()

# 定义将要执行的SQL语句

sql1 = "insert into userinfo (user, pwd) values (%s, %s);"

sql2 = "insert into hobby (id, hobby) values (%s,%s);"

user = "july1"

pwd = "july1"

id = "我是错误的id" #id = "3"

hobby = "打游戏"

try:

# 拼接并执行SQL语句

cursor.execute(sql1, [user, pwd])

print(sql1)

cursor.execute(sql2, [id, hobby]) # 报错的SQL语句

# 涉及写操作注意要提交

conn.commit()

except Exception as e:

print(str(e))

# 有异常就回滚

conn.rollback()

# 关闭连接

cursor.close()

conn.close()

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值