python高级学习笔记Day03-- Ubuntu安装Mysql,navicat,python连接数据库,函数参数,闭包,SQL注入
2022/2/7 19:17:08
本文主要是介绍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
输入密码回车
quit或exit退出
mysql配置文件(了解)
一旦连接服务器自动获取配置文件,用户不用填写太多配置。
客户端Navicat的使用
打开后连接mysql
创建连接
连接成功
新建数据库,建表
python连接MySQL数据库
PyMysql模块
我们可以通过程序代码的方式去连接数据库,然后对数据库进行增删查改的方式,实现10000条数据的插入,像这样的使用代码的方式操作数据库就称为数据库编程。
安装pymysql第三方包
使用步骤:
实战:
查询:
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()
查询出所有数据
防止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关键字来完成
这篇关于python高级学习笔记Day03-- Ubuntu安装Mysql,navicat,python连接数据库,函数参数,闭包,SQL注入的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-06-25MySQL报错Duplicate entry '0' for key 'PRIMARY'
- 2024-05-29阿里 Canal 实时同步 MySQL 增量数据至 ClickHouse 数据库
- 2024-05-24在Linux下管理MySQL的大小写敏感性
- 2024-04-26MySQL查出时间比实际晚8小时的解决方案
- 2024-04-01JPA不识别MySQL的枚举类型
- 2024-03-30mysql数据库表卡死解决方法
- 2024-03-15MySQL多数据源笔记5-ShardingJDBC实战
- 2024-03-11natural join mysql
- 2024-03-11关于VS2017,VS2015 中利用 EF使用Mysql 不显示数据源问题解决方案
- 2024-02-26mysql 阿里云xb后缀备份文件恢复-icode9专业技术文章分享