视图函数中进行sql查询
import pymysql # 创建连接 use_unicode=true指定字符的编码、解码格式,进行自动编码解码,mysql数据库的编码格式为gbk,而项目数据库为utf-8 # 使用与django和falsk框架 db=pymysql.connect(host='127.0.0.1',user='root',password='',port=3306,database='t1',charset='utf8',use_unicode=True) def func(): sql='select * from class' try: # 获得course对象 corsor=db.cursor() # 执行sql语句 corsor.execute(sql) # 获得查询结果 results=corsor.fetchall() l=list(results) print(l) return len(l) except Exception as e: return str(e) if __name__ == '__main__': print(func())
防止sql注入
from pymysql import * def main(): find_name = input("请输入物品名称:") # 创建Connection连接 conn = connect(host='localhost',port=3306,user='root',password='',database='t1',charset='utf8') # 获得Cursor对象 cs1 = conn.cursor() # 不使用防护措施 输入 " or 1=1 or " 那么就返回数据库数据,造成数据库泄露 # count=cs1.execute("select * from course where cname='%s'" % find_name) # 构造查询参数 -- 方式sql注入 execute模块会自动为要查询的匹配引号和双引号 params=[find_name] count=cs1.execute('select * from course where cname=%s',params) # 注意: # 如果要是有多个参数,需要进行参数化 # 那么params = [数值1, 数值2....],此时sql语句中有多个%s即可 print(count) result=cs1.fetchall() print(result) # 关闭corsor对象 cs1.close() # 关闭connection对象 conn.close() if __name__ == '__main__': main()
输入要查的字段会显示响应数据内容。