python程序中使用MySQL数据库,, 目录


目录

python程序中使用MySQL数据库 1 pymysql连接数据库 2 sql 注入 3 增删改查操作 4 pymysql使用总结

python程序中使用MySQL数据库


1、python中使用MySQL数据库需要借助第三方模块 pymysql(pip install pymysql)

2、pymysql本质是一个套接字客户端软件,在python 程序中使用pymysql对象链接服务器端

1 pymysql连接数据库

#方式1:import pymysql#step1 链接conn = pymysql.connect(                        host="localhost",                        user="root",                        password="123",                        db="myschool",                        charset="utf8")         cursor = conn.cursor()                  #step2 拿游标sql = "select * from class;"            #step3 拼接sql语句res1 = cursor.execute(sql)              #step4 调用execute()执行sql语句print(res1)                             #res不是查询的数据结果,而是查到数据的行数#step5 得到查询数据res2 = cursor.fetchone()                #fetchone返回查到第一行数据,以元组的形式返回res3 = cursor.fetchmany(2)              #fetchmany(n) 返回查到的接着n条记录res4 = cursor.fetchall()                #fetchall() 返回剩下所有的数据记录cursor.close()          #step6 #关闭游标conn.close()            #step7 #关闭客户端链接

1、方式1清楚地列出了使用pymysql连接数据库的主要步骤

2、当使用查询操作时,查询的数据需要使用 fetchone()等函数获得,返回元组形式的结果

3、使用增、删、改操作时,涉及到拼接sql语句时的字符串引号问题,需要注意sql注入问题

4、此外,还有第二种连接方式,用字典进行连接参数的管理,这样子更优雅

#方式2:import pymysql.cursorsconfig = {    'host': '127.0.0.1',    'port': 3306,    'user': 'root',    'password': 'root',    'db': 'myschool',    'charset': 'utf8' }conn = pymysql.connect(**config)        #step1 创建连接#cursor = conn.cursor()                 #step2 创建游标方式1with conn.cursor() as cursor:           #创建游标方法2 不需要再手动关闭游标    sql = "select * from class;"        #step3 拼接sql语句    cursor.execute(sql)                 #step4 执行sql语句    res = cursor.fetchall()             #step5 得到查询数据    print(res)conn.close()                        #step6 关闭连接,释放内存

2 sql 注入

sql注入现象见:https://www.cnblogs.com/linhaifeng/articles/7525619.html#_label3

1、通过前端的表单提交的数据中携带sql语句, 欺骗服务器, 在后端对数据进行存储时, 执行恶意的sql语句

2、比如在使用pymysql操作数据库是使用字符串拼接生产sql语句, 就会出现sql注入漏洞

3、使用pymysql时, 不要自己拼接字符串, 而是使用execute方法, pymysql模块已经对提交的数据做了处理, 不会出
现sql注入

3 增删改查操作

1、查主要使用的是execute()和fetchone()系列函数

2、增删改主要使用的是execute()和commit()函数

#示例1:查import pymysqlconn = pymysql.connect(host="localhost",user="root",password="123",                       db="myschool",charset="utf8")cursor = conn.cursor()sql = "select * from student;"res = cursor.execute(sql)data = cursor.fetchall()  #fetchone()\fetchmany(size)print(data)cursor.close()conn.close()

3、需要注意的一点是,不要自己拼接sql语句的字符串、使用在execute中传参的方式

#示例2:增import pymysqlconn = pymysql.connect(host="localhost",user="root",password="123",                       db="myschool",charset="utf8")cursor = conn.cursor()#方式1sql = "insert into student(sname,cid) values("tom",2);"     res = cursor.execute(sql,)print(res) #打印sql影响成功的行数conn.commit() #提交后才发现表中插入记录成功#方式2sql = "insert into student(sname,cid) values(%s,%d);"res = cursor.execute(sql,("tom",2))         #参数放在元祖中print(res)conn.commit() #提交后才发现表中插入记录成功#方式3sql='insert into student(sname,cid) values(%s,%d);'res=cursor.executemany(sql,[("jack",3),("lili",4)]) #插入多行,列表print(res)conn.commit() #提交后才发现表中插入记录成功cursor.close()conn.close()#删、改的操作类似

4 pymysql使用总结

1、pymysql.connect()参数说明    host(str)       #MySQL服务器地址    port(int)       #MySQL服务器端口,默认3306    user(str)       #用户名    password(str)   #密码    db(str)         #数据库名    charset(str)    #连接编码    2、connection对象支持的方法    cursor()        #获得游标    commit()        #提交当前事务    rollback()      #回滚当前事务     close()         #关闭连接3、cursor对象支持的方法    execute()           #执行一个sql语句    fetchone()          #获取结果集中的一条记录    fetchmany(size)     #获取结果集中的多条记录,size指定条数    fetchall()          #获取结果集中的所有剩下所有条    rowcount()          #返回数据条数或影响行数    rownumber           #返回数据条数或影响行数    close()             #关闭游标对象    

python程序中使用MySQL数据库

评论关闭