资讯专栏INFORMATION COLUMN

pymysql 使用

CastlePeaK / 1468人阅读

摘要:一安装模块二导入需要的模块三构建数据库属性四写语句五使用连接数据库六执行语句插入数据删除删除数据时如果没有提交数据库中数据不变但是查询到的东西没有要删除的那条数据修改数据库如果修改没有提交在代码查看到的数据已经修改单数数据库中的数据没有修改

一.安装pyMySQL模块

pip install pymysql

二,导入需要的模块

import pymysql

三.构建数据库属性

host = "localhost"
username = "root"
password = "root"
db_name = "test"

四.写sql语句

insert_table_sql = """insert into user values (null ,"lw","555222000")"""
find_table_sql = """select * from user"""
delete_table_sql = """delete from user where user_id={user_id}"""

五.使用pymysql连接数据库

 conn = pymysql.connect(host=host,
                           user=username,
                           password=password,
                           db=db_name)

六.执行SQL语句

    try:
        with conn.cursor() as cursor:
            # 插入数据
            # cursor.execute(insert_table_sql.format(username="ll", password="123"))
            # conn.commit()

            # 删除
            # cursor.execute(delete_table_sql.format(user_id="3"))
            # pymysql删除数据时,如果,没有提交,数据库中数据不变,但是查询到的东西没有
            # 要删除的那条数据
            # conn.commit()
            # 修改数据库
            cursor.execute(update_table_sql.format(user_id=5))
            # 如果修改没有提交,在代码查看到的数据已经修改,单数数据库中的数据没有修改
            conn.commit()
            # 查询全部数据
            cursor.execute(find_table_sql)
            result = cursor.fetchall()
            print(result)

    finally:
        conn.close()

七.防sql注入

修改插入数据sql语句为:
insert_table_sql = """insert into user(user_id,user_name,password) values (%S ,%S,%S)"""
执行代码修改为
 cursor.execute(insert_table_sql, (1, "ll", "123"))
 conn.commit()

运行后报错

Traceback (most recent call last):
  File "D:/creator/pythonProject/0002.py", line 55, in 
    save_code()
  File "D:/creator/pythonProject/0002.py", line 33, in save_code
    cursor.execute(insert_table_sql, (1, "ll", "123"))
  File "D:creatorpythonProjectvenvlibsite-packagespymysqlcursors.py", line 168, in execute
    query = self.mogrify(query, args)
  File "D:creatorpythonProjectvenvlibsite-packagespymysqlcursors.py", line 147, in mogrify
    query = query % self._escape_args(args, conn)
ValueError: unsupported format character "S" (0x53) at index 54

错误原因:字符占位符写错的应该是%s 而不是$S s应该小写

修改语句为

insert_table_sql = """insert into user(user_id,user_name,password) values (%s ,%s,%s)"""

运行正常

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/42941.html

相关文章

  • 【Python3】pymysql模块

    摘要:模块什么是是在版本中用于连接服务器的一个库,中则使用。遵循数据库规范,并包含了客户端库。 【Python3】pymysql模块 1. 什么是 PyMySQL? PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用mysqldb。 PyMySQL 遵循 Python 数据库 API v2.0 规范,并包含了 pure-Python ...

    Drummor 评论0 收藏0
  • python中操作mysql的pymysql模块详解

    摘要:简述是中操作的模块,其使用方法和几乎相同。但目前支持而后者不支持版本。因此要避免这种情况需使用提供的参数化查询。使用存储过程动态执行防注入使用存储过程自动提供防注入,动态传入到存储过程执行语句。 简述 pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同。但目前pymysql支持python3.x而后者不支持3.x版本。本文测试python版本:3.5....

    shiweifu 评论0 收藏0
  • 如何用python的pymysql操作MySQL数据库?

    摘要:一介绍是在版本中用于连接和操作服务器的一个库引入方式二连接数据库的完整流程引入模块引入第三方库创建连接对象用户名密码端口号默认为且此处为整数类型数据库名连接地址使用连接对象创建游标对象游标对象是通过链接对象进行创 ...

    Keagan 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<