python高级学习笔记Day03-- Ubuntu安装Mysql,navicat,python连接数据库,函数参数,闭包,SQL注入

ubuntu安装mysql服务

sudo apt-get install mysql-server

查看MySQL是否启动

ps -ajx|grep mysql

开启和停止

sudo service mysql start

sudo service mysql stop

客户端安装

ubuntu下客户端服务端均已经默认安装

sudo apt-get install mysql-client

最基本连接指令

初始化mysql设置密码等

连接

mysql -uroot -p

输入密码回车

python高级学习笔记Day03-- Ubuntu安装Mysql,navicat,python连接数据库,函数参数,闭包,SQL注入

quit或exit退出

mysql配置文件(了解)

一旦连接服务器自动获取配置文件,用户不用填写太多配置。

python高级学习笔记Day03-- Ubuntu安装Mysql,navicat,python连接数据库,函数参数,闭包,SQL注入

客户端Navicat的使用

python高级学习笔记Day03-- Ubuntu安装Mysql,navicat,python连接数据库,函数参数,闭包,SQL注入

 打开后连接mysql

python高级学习笔记Day03-- Ubuntu安装Mysql,navicat,python连接数据库,函数参数,闭包,SQL注入

创建连接

 python高级学习笔记Day03-- Ubuntu安装Mysql,navicat,python连接数据库,函数参数,闭包,SQL注入

连接成功

python高级学习笔记Day03-- Ubuntu安装Mysql,navicat,python连接数据库,函数参数,闭包,SQL注入

新建数据库,建表

python高级学习笔记Day03-- Ubuntu安装Mysql,navicat,python连接数据库,函数参数,闭包,SQL注入

 python连接MySQL数据库

 PyMysql模块

我们可以通过程序代码的方式去连接数据库,然后对数据库进行增删查改的方式,实现10000条数据的插入,像这样的使用代码的方式操作数据库就称为数据库编程。

安装pymysql第三方包

python高级学习笔记Day03-- Ubuntu安装Mysql,navicat,python连接数据库,函数参数,闭包,SQL注入

使用步骤:

python高级学习笔记Day03-- Ubuntu安装Mysql,navicat,python连接数据库,函数参数,闭包,SQL注入

实战:

        查询

import pymysql as pymysql

conn = pymysql.connect(host='localhost', port=3306, user='root', password='123456', database='test',
                       charset='utf8')
cs = conn.cursor()
sql = 'select * from students;'
content = cs.execute(sql)
print(content)  # 返回影响的行数
print(cs.fetchall())  # 按顺序获取查询到的所有内容 fetchone()获取所有数据

cs.close()

conn.close()


        增删改:(注意commit!)

import pymysql as pymysql

conn = pymysql.connect(host='localhost', port=3306, user='root', password='123456', database='test',
                       charset='utf8')
cs = conn.cursor()
sql = 'insert into students(sname) values("yanzu")'
cs.execute(sql)
sql = 'select * from students'
cs.execute(sql)
content = cs.fetchall()
for i in content:
    print(i)
conn.commit()
cs.close()
conn.close()

SQL语句参数化

sql注入

import pymysql as pymysql

conn = pymysql.connect(host='localhost', port=3306, user='root', password='123456', database='test',
                       charset='utf8')
cs = conn.cursor()
while True:
    find_name = input('please input the name you want to query:')
    sql = 'select * from students where sname="%s"' % find_name
    cs.execute(sql)
    content = cs.fetchall()
    for i in content:
        print(i)
cs.close()
conn.close()

查询出所有数据
python高级学习笔记Day03-- Ubuntu安装Mysql,navicat,python连接数据库,函数参数,闭包,SQL注入

 防止sql注入

import pymysql as pymysql

conn = pymysql.connect(host='localhost', port=3306, user='root', password='123456', database='test',
                       charset='utf8')
cs = conn.cursor()
while True:
    find_name = input('please input the name you want to query:')
    sql = 'select * from students where sname=%s'
    cs.execute(sql,[find_name])
    content = cs.fetchall()
    for i in content:
        print(i)
cs.close()
conn.close()

函数参数

函数可以当作参数去使用。

def func01():
    print("func_01 is showing!")
print(func01)  #函数名存放的是函数所在空间的地址
func02 = func01  #函数名也可以像变量一样赋值
func02() #函数名加小括号是执行函数名所存放的空间地址中的代码
 

使用函数做参数:

def func01():
    print("func_01 is showing!")


def foo(func):
    func()


foo(func01)

闭包

在函数嵌套的前提下,内部函数使用了外部函数的变量,并且外部函数返回了内部函数,我们把这个使用外部函数变量的内部函数称为闭包。

def func_out(num1):
    def func_inner(num2):
        num = num1 + num2

    return func_inner


#创建闭包实例
f = func_out(10)
f(1)
f(2)

结论:闭包可以对外部函数的变量进行保存。

案例:

def config_name(name):
    def say_info(info):
        print(name + ':' + info)

    return say_info


a = config_name('zhangsan')
a('i am your father!')
b = config_name('lisi')
b('i am your real father!!!')

结论:闭包不仅可以保存外部函数的变量还可以提高代码的复用性

闭包修改外部变量

def func_out(num1):
    def func_inner(num2):
        nonlocal num1
        num1 = num2 + 10
    print(num1)
    func_inner(10)
    print(num1)
    return func_inner

f = func_out(10)

修改闭包内使用的外部函数变量使用nonlocal关键字来完成

上一篇:封装mysql数据库,写sql语句的


下一篇:【数据库】pymysql数据库事务操作