[MySQL & Python] 06. 使用Python进行数据操作
Python操作数据库的常用命令
#导入模块
import pymysql
#连接数据库,得到Connection对象
conn = pymysql.connect(host='127.0.0.1',port=3306, user='root', charset='utf8',passwd = "leo123123", db='day26db')
#从Connection对象生成Cursor对象
cursor = conn.cursor();
#使用Cursor对象进行数据添加(需要commit)
cursor.execute("insert into data(name, age, email) values ('William', 47,'William@qq.com')")
conn.commit();
#使用Cursor对象进行数据删除(需要commit)
cursor.execute("delete from data where name = 'William'")
conn.commit();
#使用Cursor对象进行数据修改(需要commit)
cursor.execute("update data set name=concat('SLQ-', name)")
conn.commit();
#使用Cursor对象进行数据查询
cursor.execute('select * from data')
#Cursor.fetchone()从查询结果中获取一条数据.
#返回结果为一个元组, 无数据返回None
result = cursor.fetchone();
#Cursor.fetchone()从查询结果中获取所有数据.
#返回结果为一个嵌套的元组((行1),(行2),(行3)), 无数据返回空元组()
result = cursor.fetchall();
#关闭连接
cursor.close()
conn.close()
操作范例
设计一段代码实现用户注册和登录的功能
#MYSQL中创建数据库 mysql> create database userdb default charset utf8 collate utf8_general_ci; mysql> create table userdb ( -> id int not null primary key auto_increment, -> name varchar(20) not null, -> password varchar(2) not null) default charset='utf8'; #Python代码 import pymysql def register_user(): print("用户注册") user = input("请输入用户名:") password = input("请输入密码:") conn = pymysql.connect(host='127.0.0.1', port=3306, \ user='root', charset="utf8", db="userdb") cursor = conn.cursor() slq = 'insert into user(name, password) values ("{}", "{}")'.format(user, password) cursor.execute(slq) conn.commit() cursor.close() conn.close() def login(): print("用户登陆") user = input("请输入用户名:") password = input("请输入密码:") conn = pymysql.connect(host='127.0.0.1', port=3306, \ user='root', passwd = 'pass123', charset="utf8", db="userdb") cursor = conn.cursor() sql = 'select * from user where name="{}" and password = "{}"'.format(user, password) cursor.execute(sql) #使用cursor.fetchone(),要么返回数值,要么返回None。 #不可以fetchall,他永远都会返回元组,即使没有数据,也会返回一个空元组。 result = cursor.fetchone() print(result) cursor.close() conn.close() if result is None: print("登陆失败") else: print("登陆成功") def run(): choice = input('1.注册 2.登陆') if choice == "1": register_user() elif choice =="2": login() else: print('无效输入') if __name__ == '__main__': run()
为了避免SQL注入问题,不建议用sql字符串进行数据的操作,改为使用Cursor.execute()方法来实现。
#第一种方式
#传入两个参数给cursor.execute方法。
#第一个参数是sql查询,需要替代的部分使用%s代替。
#第二个参数是一个列表或者元组,包含了sql语句中%s应被替代的内容。
cursor.execute("select * from users where username = %s and password = %s" , [usr, pwd])
#第二种方式
#传入两个参数给cursor.execute方法。
#第一个参数是sql查询,需要替代的部分使用%(名称)s代替。
#第二个参数是一个字典,使用键值对替代sql对应的内容。
cursor.execute("select * from users where username = %(usr)s and password = %(pwd)s" , {usr: "Leo", pwd:"123"})
posted on 2022-04-06 11:25 LeoZhangJing 阅读(37) 评论(0) 编辑 收藏 举报