• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

Python pymsql模块的使用

python 搞代码 4年前 (2022-01-07) 21次浏览 已收录 0个评论

这篇文章主要介绍了Python pymsql模块的使用,帮助大家我们利用 python 语言与 mysql 进行链接,感兴趣的朋友可以了解下

基本使用

首先要下载 pymysql

 pip install pymsql

以下是 pymysql 的基本使用

 import pymysql # 链接,C/S架构,TCP链接 conn = pymysql.connect( host="localhost", database="db1", charset="utf8mb4", user<em style="color:transparent">来源[email protected]搞@^&代*@码网</em>="root", cursorclass=pymysql.cursors.DictCursor, # 记录结果,字典显示 # password = "your password", ) # 游标 cursor = conn.cursor() # 执行sql sql = "show tables" res = cursor.execute(sql) # 提交执行,返回sql影响成功的行数 print(res) # 2 代表该数据库下有2个表 print(cursor.fetchall()) # [{'Tables_in_db1': 't1'}, {'Tables_in_db1': 't2'}] cursor.close() # 关闭游标 conn.close()

游标概念

可以看到在上面的示例中有一个游标的概念,其实这个也非常简单,就等同于光标的上下移动,每移动一次代表一条记录。

pymsql 中,对于 select 等操作返回的结果都可以通过游标的移动配合相应方法函数来进行读取。

sql注入

如果你的某些 sql 语句要进行字符串拼接,那么一定要使用 pymysql 提供的 execute() 方法进行拼接,不要去用 python 中的 %format() 方法,这可能导致出现 sql 注入问题带来不安全的隐患。

注意:使用 execute() 时,不可传入表名,数据库名。否则会抛出语法错误,这是因为在拼接时会自动添加上“号

 import pymysql # 链接 conn = pymysql.connect( host="localhost", database="db1", charset="utf8mb4", user="root", cursorclass=pymysql.cursors.DictCursor, # 记录结果,字典显示 # password = "your password", ) # 游标 cursor=conn.cursor() # 执行sql sql = "select * from t1 where id=%s" res = cursor.execute(sql,("1",)) # 提交执行,返回sql影响成功的行数 这里拼接能预防sql注入问题 print(res) # 1 查出一条记录 print(cursor.fetchall()) # 拿到所有记录的结果 cursor.close() # 关闭游标 conn.close()

事务提交

在执行 UPDATE/INSERT/DELETE 之类的操作,必须使用 conn.commit() 进行事务提交后方可生效。

或者你可以在实例化 conn 对象时为他指定 auto_commit 参数为 true 即可自动提交事务。

 import pymysql # 链接 conn = pymysql.connect( host="localhost", database="db1", charset="utf8mb4", user="root", cursorclass=pymysql.cursors.DictCursor, # 记录结果,字典显示 autocommit = True, # 自动提交 # password = "your password", ) # 游标 cursor=conn.cursor() # 执行sql sql = "insert into t1(name) values(%s)" res = cursor.execute(sql,("新记录",)) # 提交执行,返回sql影响成功的行数 这里拼接能预防sql注入问题 print(res) # 1 成功插入一条记录 print(cursor.lastrowid) #在插入语句后查看,查看最后一条记录的行号 print(cursor.fetchall()) # conn.commit() # 手动提交 cursor.close() # 关闭游标 conn.close()

提交多条

使用 cursor.executemany() 方法可一次性提交多条 sql 操作。

 import pymysql # 链接 conn = pymysql.connect( host="localhost", database="db1", charset="utf8mb4", user="root", cursorclass=pymysql.cursors.DictCursor, # 记录结果,字典显示 autocommit = True, # 自动提交 # password = "your password", ) # 游标 cursor=conn.cursor() # 执行sql sql = "insert into t1(name) values(%s)" # 同一条命令,执行3次 res = cursor.executemany(sql,[("新记录1"),("新纪录2"),("新纪录3")]) # 提交执行,返回sql影响成功的行数 这里拼接能预防sql注入问题 print(res) # 3 成功插入三条记录 print(cursor.lastrowid) #在插入语句后查看,查看最后一条记录的行号 print(cursor.fetchall()) cursor.close() # 关闭游标 conn.close()

游标相关

获取到一条记录后,我们可以控制游标移动。

也可以控制查看游标后的多少条记录

游标每移动一次代表一条记录

命令解析 描述
cursor.scroll(3,mode=’absolute’) 游标以绝对位置向后移动3条记录
cursor.scroll(3,mode=’relative’) 游标以当前位置向后移动3条记录
注意:游标移动的条数即为记录的条数,如果移动值为负N就代表上N条记录

如果我们想获取记录,可使用以下三个方法

命令解析 描述
cursor.fetchone() 获取第一条记录,游标向下移动一行
cursor.fetchmany(2) 获取接下来的两条记录,游标向下移动两行
cursor.fetchall() 获取全部记录,游标移动到末尾,返回的是一个列表
 import pymysql # 链接 conn = pymysql.connect( host="localhost", database="db1", charset="utf8mb4", user="root", cursorclass=pymysql.cursors.DictCursor, # 记录结果,字典显示 autocommit = True, # 自动提交 # password = "your password", ) # 游标 cursor=conn.cursor() # 执行sql sql = "select * from t1" # t1表中4条记录 cursor.execute(sql) print(cursor.fetchone()) 游标移动到2的位置 cursor.scroll(2,mode='relative') 向下移动2,当前游标为4 print(cursor.fetchone()) cursor.close() # 关闭游标 conn.close() """ {'id': 1, 'name': '记录1'} {'id': 4, 'name': '记录4'} """

插入行号

如果执行的是 INSERT 操作,可以在插入后查看最后插入的 ID 行号

 import pymysql # 链接 conn = pymysql.connect( host="localhost", database="db1", charset="utf8mb4", user="root", cursorclass=pymysql.cursors.DictCursor, # 记录结果,字典显示 autocommit = True, # 自动提交 # password = "your password", ) # 游标 cursor=conn.cursor() # 执行sql sql = "insert into t1(name) values(%s)" # 同一条命令,执行3次 res = cursor.executemany(sql,[("新记录1"),("新纪录2"),("新纪录3")]) # 提交执行,返回sql影响成功的行数 这里拼接能预防sql注入问题 print(res) # 3 成功插入三条记录 print(cursor.lastrowid) #在插入语句后查看,查看最后一条记录的行号 print(cursor.fetchall()) # conn.commit() # 手动提交 cursor.close() # 关闭游标 conn.close()

以上就是Python pymsql模块的使用的详细内容,更多关于Python pymsql的资料请关注gaodaima搞代码网其它相关文章!

以上就是Python pymsql模块的使用的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Python pymsql模块的使用

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址