python操作数据库的框架_数据库学习笔记 (三) python操作数据库

python 操作MYSQL数据库主要有两种方式:

使用原生模块:pymysql

ORM框架:SQLAchemy

一、pymysql

1.1下载安装模块

第一种:cmd下:执行命令下载安装:pip3 install pymysql

第二种:IDE下pycharm python环境路径下添加模块

1.2使用操作

#导入模块

import pymysql

#建立连接通道,建立连接填入(连接数据库的IP地址,端口号,用户名,密码,要操作的数据库,字符编码)

conn = pymysql.connect(

host="",

port="",

user='',

password='',

database=""

charset="",

)

# 创建游标,操作设置为字典类型,返回结果为字典格式!不写默认是元组格式!

cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)

#操作数据库的sql语句

sql=""

# 向数据库发送数据,在方法内部进行拼接!!!

#向数据库发送操作单条操作指令

# 格式化输入的值可以单个按顺序传入 或是写成列表 (注意 顺序和位置)

r = cursor.execute(sql,v1,v2……)

r = cursor.execute(sql,args)

#r 代表接收返回受影响的行数(数字)及执行这一条sql语句,数据库中有多少行受到了影响。

#sql 指上边写的sql语句

#args 指要给sql语句中传的参数

sql 语句可以不传值 及为空 []

sql 语句可以传一个值 及 [v1,]

sql 语句可以传多值 及 [v1,v2,v3……]

#向数据库发送操作多条数据指令 args=[(v1,s1),(v2,s2),(v3,s3)]

r = cursor.executemany(sql,[('egon','sb'),('laoyao','BS')])

#数据库有四种操作:增删改查!

# 执行查操作的时候就得接收从数据库返回的数据!

#执行增删改操作的时候,就需要像数据库提交数据!

#查操作:(接收的数据格式由创建的游标样式决定!)

#接收数据有三种方式:

res = cursor.fetchone() #接收返回的第一行数据

ret = cursor.fetchmany(n) #接收返回的n行数据

req = cursor.fetchall() #接收返回的说有数据

#注:在fetch数据时按照顺序进行,可以使用cursor.scroll(num,mode)来移动游标位置,如:

cursor.scroll(1,mode='relative') # 相对当前位置移动

cursor.scroll(2,mode='absolute') # 相对绝对位置移动

#增删改操作:

#写完发送操作语句之后,就需要把更改的数据提交,不然数据库无法完成新建或是修改操作

conn.commit() #提交

#注:此处有个获取新建数据自增ID的操作(只能拿到最后那一行的id数)

#执行增加语句,并提交之后,可以获取到

new_id=cursor.lastrowid

print(new_id)

#操作完成之后,就需要关闭连接

cursor.close() #关闭游标

conn.close() #关闭连接

操作总结:

1、重中之重,一定要注意sql注入的问题!!!

#格式化写入sql语句,就会造成sql注入的情况!!!

import pymysqluser =input("username:")

pwd=input("password:")

conn= pymysql.connect(host="localhost",user='root',password='',database="db666")cursor = conn.cursor()

sql= "select * from userinfo where username='%s' and password='%s'" %(user,pwd,)

#select * from userinfo where username='uu' or 1=1 --' and password='%s'

cursor.execute(sql)

result= cursor.fetchone()cursor.close()

conn.close()ifresult:print('登录成功')else:print('登录失败')

sql注入问题示例

import pymysqluser =input("username:")

pwd=input("password:")

conn= pymysql.connect(host="localhost",user='root',password='',database="db666")cursor = conn.cursor()

sql= "select * from userinfo where username=%s and password=%s"

# sql= "select * from userinfo where username=%(u)s and password=%(p)s"

#传入数据类型举例cursor.execute(sql,user,pwd) #直接传值

#cursor.execute(sql,[user,pwd]) #列表形式

#cursor.execute(sql,{'u':user,'p':pwd}) #字典格式

result= cursor.fetchone()cursor.close()

conn.close()ifresult:print('登录成功')else:print('登录失败')

传入数据类型举例

import pymysql

# 增加,删,该

# conn= pymysql.connect(host="localhost",user='root',password='',database="db666")

#cursor = conn.cursor()

# sql= "insert into userinfo(user

你可能感兴趣的:(python操作数据库的框架)