python操作三大数据库(一)---------------mysql

所有操作之前需要先安装mysql模块pymysql

连接mysql

import pymysql
    #建立连接
    conn=pymysql.connect(host=’127.0.0.1’,port=3306,user=’root’,passwd=’123456’,db=’xxxx’,charset=’utf8’)
    #生成游标
    cur = conn.cursor()
    #添加sql语句
    sql=’CREATE TABLE teacher(id INT NOT NULL AUTO_INCREMENT,name VARCHAR(20) NOT NULL,PRIMARY KEY (id))’
    #执行sql语句
    cur.execute(sql)
    cur.close()
    conn.close()

'''
connect()参数解释
host:连接的mysql主机,本机localhost
prot:连接的mysql主机的端口,默认是3306
db:要连接的数据库名称
user:连接的用户名
passwd:连接的密码
charset:通信采用的编码方式
'''

connect对象

close()关闭连接
commit() 事务,需要提交才会生效
rollback()事务,放弃之前的操作
cursor()返回cursor对象,用于执行sql语句并获得结果

cursor对象

close()关闭
execute()执行语句,返回受影响的行数
fetchone()执行查询语句时,获取查询结果集的第一行数据,返回一个元组
fetchall()执行查询时,获取结果集的所有行,一行构成一个元组,再将这些元组装入一个元组返回
next() 执行查询语句时,获取当前行的下一行
scroll() 将行指针移动到某个位置

参数传入

如果想在sql语句中传参,可以这样写

name='xxx'
cur.execute('insert into student(name) values(%s)',[name])

实例:用户登陆

在这里插入图片描述
table userinfos(
id int primary key auto_increment,
uname varchar(20),
upwd char(40),
isdelete bit default 0
);

mysqlObjct.py

#coding=utf-8
import pymysql

class MysqlHelper:
    def __init__(self,host='localhost',port=3306,db='demo',
user='root',passwd='123456',charset='utf8'):
        self.conn=pymysql.connect(host=host,port=port,db=db,user=user,passwd=passwd,charset=charset)
def insert(self,sql,params):
    return self.__cud(sql,params)

def update(self,sql,params):
    return self.__cud(sql,params)

def delete(self,sql,params):
    return self.__cud(sql,params)

def __cud(self,sql,params=[]):
    try:
        cs1 = self.conn.cursor()
        rows=cs1.execute(sql, params)
        self.conn.commit()
        cs1.close()
        self.conn.close()
        return rows
    except Exception as e:
        print (e)
        self.conn.rollback()

def fetchone(self,sql,params=[]):
    try:
        cs1=self.conn.cursor()
        cs1.execute(sql,params)
        row=cs1.fetchone()
        cs1.close()
        self.conn.close()
        return row
    except Exception as e:
        print (e)

def fetchall(self,sql,params):
    try:
        cs1=self.conn.cursor()
        cs1.execute(sql,params)
        rows=cs1.fetchall()
        cs1.close()
        self.conn.close()

        return rows
    except Exception as e:
        print (e)

mysqldb.py

from mysql import mysqlObject 
#创建用户
name = input("请输入姓名:")
pwd = input("请输入密码:")
param=[name,pwd]
sql='insert into userinfo(name,pwd) values(%s,%s)'
sqlObj = mysqlObject.MysqlHelper('localhost',3306,'demo','root','123456','utf8')
sqlObj.insert(sql,param)
#登陆用户
name = input("请输入姓名:")
pwd = input("请输入密码:")
sql='select pwd from userinfo where name=%s'
param=[name]
result = sqlObj.fetchone(sql,param)

if result==None:
    print('用户名错误')
elif result[0]==pwd:
    print('登陆成功')
else:
    print('密码错误')
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值