愚公移山日记·33
今天学到的是MySQL再python中的使用。
python连接mysql
# 数据库编程
# 参数host:连接mysql主机,如果本机是'locahost'
# 参数port:连接MySQL主机的端口,默认是3306
# 参数database:数据库的名称
# 参数user:连接的用户名
# 参数password:连接的密码
# 参数charset:通信采用的编码,推荐使用utf8
'''
导入模块
建立连接对象 pymysql.connect()
创建游标对象
使用游标对象执行sql语句
获取执行的结果
打印输出获取的内容
关闭游标对象
关闭连接对象
'''
# 导入模块
import pymysql
# 建立连接对象
# pymysql.connect()
# host 主机
# user 用户名
# password 密码
# database 指定数据库
conn = pymysql.connect(host='locahost', user='root', password='mysql', database='jingdong_dong')
# 创建游标对象
conn.cursor()
cur = conn.cursor()
# 使用游标对象执行sql语句
# cur.execute(sql语句)返回值是影响的行数,如果是查询语句,此处返回值总记录数。
result = cur.execute('select * from goods')
print('查询到:%s条数据' % result)
# 获取执行的结果
# cur.fetchone()从查询的结果中取出一条数据
# result_list = cur.fetchone() 查询一个数据
# result_list = cur.fetchall() 查询全部数据 并且格式 为 ((),(),())
result_list = cur.fetchall()
# 打印输出获取的内容
# print(result_list)
for line in result_list:
print(line)
# 关闭游标对象
cur.close()
# 关闭连接对象
conn.close()
python操作sql
相比于连接,sql多了一步就是commit
# 数据库编程
# 参数host:连接mysql主机,如果本机是'locahost'
# 参数port:连接MySQL主机的端口,默认是3306
# 参数database:数据库的名称
# 参数user:连接的用户名
# 参数password:连接的密码
# 参数charset:通信采用的编码,推荐使用utf8
'''
导入模块
建立连接对象 pymysql.connect()
创建游标对象
使用游标对象执行sql语句
获取执行的结果
打印输出获取的内容
关闭游标对象
关闭连接对象
'''
# 导入模块
import pymysql
# 建立连接对象
# pymysql.connect()
# host 主机
# user 用户名
# password 密码
# database 指定数据库
conn = pymysql.connect(host='locahost', user='root', password='mysql', database='jingdong_dong')
# 创建游标对象
conn.cursor()
cur = conn.cursor()
# 使用游标对象执行sql语句
# cur.execute(sql语句)返回值是影响的行数,如果是查询语句,此处返回值总记录数。
result = cur.execute('select * from goods')
print('查询到:%s条数据' % result)
# 获取执行的结果
# cur.fetchone()从查询的结果中取出一条数据
# result_list = cur.fetchone() 查询一个数据
# result_list = cur.fetchall() 查询全部数据 并且格式 为 ((),(),())
result_list = cur.fetchall()
# 打印输出获取的内容
# print(result_list)
for line in result_list:
print(line)
# 关闭游标对象
cur.close()
# 关闭连接对象
conn.close()
sql防注入
防注入就是为了使用户获得相关权限的信息,而不能被过度的获取
# 数据库编程
# 参数host:连接mysql主机,如果本机是'locahost'
# 参数port:连接MySQL主机的端口,默认是3306
# 参数database:数据库的名称
# 参数user:连接的用户名
# 参数password:连接的密码
# 参数charset:通信采用的编码,推荐使用utf8
'''
导入模块
建立连接对象 pymysql.connect()
创建游标对象
使用游标对象执行sql语句
获取执行的结果
打印输出获取的内容
关闭游标对象
关闭连接对象
'''
# 导入模块
import pymysql
# 建立连接对象
# pymysql.connect()
# host 主机
# user 用户名
# password 密码
# database 指定数据库
conn = pymysql.connect(host='locahost', user='root', password='mysql', database='jingdong_dong')
# 创建游标对象
conn.cursor()
cur = conn.cursor()
input_name = input('请输入查询的名称:\n')
# 使用游标对象执行sql语句
# cur.execute(sql语句)返回值是影响的行数,如果是查询语句,此处返回值总记录数。
# result = cur.execute('select * from goods')
# 被注入的过程
# "select * from goods where name ='' or 1 or '' order by in desc " % input_name
# input_name = ' or 1 or '
# 防止注入:
# 构建参数列表prams = [input_name]
# 把列表传递给 execute(sql,prams)
params = [input_name]
sql = "select * from goods where name =%s order by in desc "
# sql = "select * from goods where name ='%s' order by in desc " % input_name
result = cur.execute(sql,params)
print('查询到:%s条数据' % result)
# 获取执行的结果
# cur.fetchone()从查询的结果中取出一条数据
# result_list = cur.fetchone() 查询一个数据
# result_list = cur.fetchall() 查询全部数据 并且格式 为 ((),(),())
result_list = cur.fetchall()
# 打印输出获取的内容
# print(result_list)
for line in result_list:
print(line)
# 关闭游标对象
cur.close()
# 关闭连接对象
conn.close()