python访问mysql_python连接mysql

首先需要导入驱动模块

打开cmd导入模块 pip install mysqldb(pymysql)

python2.x版本--------->mysqldb

python3.x版本---------->pymysql

python调用MySQL数据库总共五步

1、导入模块(驱动) pymysql  mysqldb

2、获取连接 connect

3、获取游标cursor

4、执行sql execute 并且返回结果

5、关闭资源

====================================================================

#python 调用mysql帮助类  连接数据库 创建数据查询更新的方法

#创建一个数据库帮助类

#导入pymysql模块

import pymysql

#创建类

class sqlHelper:

#初始化属性

def __init__(self,host,db,user,pwd):

self.host = host

self.port = 3306

self.db = db

self.user = user

self.pwd = pwd

self.charset = 'utf8'

#创建数据库连接 创建游标

def connection(self):

self.conn = pymysql.connect(host = self.host,port = self.port,db = self.db,user = self.user,

password = self.pwd,charset = self.charset)

self.cursor = self.conn.cursor()

return 'OK'

#创建查询一条数据的方法

def queryOne(self,sql,params):

#首先连接数据库 获取游标

try:

self.connection()

#执行sql语句

count = self.cursor.execute(sql,params)

#返回执行结果

res = self.cursor.fetchone()

return  count,res

except Exception as  ex:

print('失败,失败信息是:',ex)

finally:

#调用关闭资源的方法

self.closes()

#创建查询多条数据的方法

def queryAll(self,sql,params):

try:

#连接数据库

self.connection()

#执行sql语句

count = self.cursor.execute(sql,params)

#获取结果

res = self.cursor.fetchall()

return count,res

except Exception as e:

print('查询失败 失败信息是:',e)

finally:

#调用关闭资源的方法

self.closes()

#创建修改数据库的方法

def update(self,sql,params):

try:

# 连接数据库

self.connection()

# 执行sql语句

count = self.cursor.execute(sql,params)

#把事物(更新的信息写入数据库)

self.conn.commit()

return count

except Exception as e:

print('查询失败 失败信息是:', e)

#如果更新失败 数据库就返回到更新之前的数据

self.conn.rollback()

finally:

# 调用关闭资源的方法

self.closes()

#定义关闭资源的方法

def closes(self):

if self.cursor != None:

self.cursor.close()

if self.conn != None:

self.conn.close()

================================================================================================

测试数据库帮助类的文档:

'''

python调用mysql分为五个步骤

1、导入pymysql模块

2、获取连接 connect

3、获取游标 curs

4、执行SQL execute 并返回结果

5、关闭资源

'''

#定义用户操作数据库的一些方法

import sqlHelper

import sys

#创建连接对象  host,db,user,pwd

helper = sqlHelper.sqlHelper('localhost','db_py1712','root','root')

#print(helper.connection())

# a,s = helper.queryOne('select * from t_stumessage',[])

# print(s)

# a = helper.update('insert into t_stumessage VALUES (uuid() ,%s,%s,%s,%s,%s)',['陈乐乐',123456,21,'男','万方学院'])

# print(a)

# a,s = helper.queryAll('select * from t_stumessage',[])

# print(s)

#用户注册

def register(user):

#首先查询数据库中是否存在该用户名

#查询表中所有用户名

count,res = helper.queryAll('select username from t_stumessage',[])

#遍历元组 判断输入的用户名是否存在

bn = False

for u in res:

# print(u)

# print(type(u))

if u[0] != user:

bn = True

if bn == False:

pwd = int(input('请输入密码'))

age = int(input('请输入年龄'))

sex = input('请输入性别')

school = input('请输入学校名称')

#把用户输入的信息写如到数据库表中

# s = helper.connection()

# print(s)

count = helper.update('insert into t_stumessage VALUES (uuid() ,%s,%s,%s,%s,%s)',[user,pwd,age,sex,school])

if count > 0:

print('注册成功')

else:

print('注册失败')

else:

print('你输入的用户名已经存在,请重新输入')

#register('王少松')

#用户登录

def login(user,pwd):

#查询表中的用户名和密码 判断与用户输入的信息是否匹配

count,res = helper.queryAll('select username,pwd from t_stumessage ',[])

return count,res

#遍历res

# bn = False

# for u in res:

#    if u[0] == user and u[1] == pwd:

#        bn =True

# if bn == True:

#    print('登录成功')

# else:

#    print('用户名或密码错误,登录失败')

# u = input()

# s = input()

# login(u,s)

#用户列表 根据用户名查看用户自己的基本信息

def messages(user):

count,res = helper.queryOne('select * from t_stumessage where userName = %s',(user,))

return count,res

# if count > 0:

#    return res

# else:

#    print('查询失败')

#messages('赵娇娇')

#用户修改  根据用户名修改密码

def update(user,pwd):

count = helper.update('update t_stumessage set pwd = %s WHERE username = %s',[pwd,user])

#print(count)

if count > 0:

print('修改成功')

else:

print('修改失败')

#update('赵娇娇','123123')

#用户删除 根据用户名删除用户信息

def dels(user):

count = helper.update('delete from t_stumessage WHERE username = %s',(user,))

if count > 0:

print('删除成功')

else:

print('删除失败')

#dels('赵娇娇')

#用户退出

def exit():

print('退出')

sys.exit()

#exit()

========================================================================

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/431416.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php左侧菜单栏递归代码,js实现左侧菜单栏递归循环遍历

首先html布局菜单jsonconst menuList [{title: 首页,key: /home},{title: UI,key: /ui,children: [{title: 按钮,key: /ui/buttons,},{title: 弹框,key: /ui/modals,},{title: Loading,key: /ui/loadings,},{title: 通知提醒,key: /ui/notification,},{title: 全局Message,key…

重定向IO

引用自:http://www.cnblogs.com/liunanjava/p/4307793.html 1.三个静态变量 java.lang.System提供了三个静态变量 System.in(默认键盘)System.out(默认显示器)System.errSystem提供了三个重定向方法2.重写向方法 System提供了三个重定向方法 …

python三维数据本地保存_如何将3D Python/NumPy数组保存为文本文件?

如果保存文件需要是“csv”样式的文本,则可以使用多个savetxt和loadtxt。关键是要知道这两个都可以以打开的文件作为输入。写作示例:In [31]: Anp.arange(3*2*4).reshape(3,2,4)In [32]: A # normal display as 3 blocks of 2d arrayOut[32]:array([[[ 0…

php 简析对象,PHP白盒审计工具RIPS源码简析

RIPS是一款对PHP源码进行风险扫描的工具,其对代码扫描的方式是常规的正则匹配,确定sink点;还是如flowdroid构建全局数据流图,并分析存储全局数据可达路径;下面就从其源码上略探一二。1、扫描流程分析其源码前&#xff…

投资股权众筹项目,至少需要关注6个方面

1.股权结构去工商局查看这个公司的股权结构,哪些人是股东,历史出资情况。工商局网站上有很多信息可以查看,我发现北京工商局网站上可以查看的信息比较全面,而上海的就很稀烂。 几个查询网站: 北京企业信用信息网 ht…

python支持gui编程_Python GUI编程完整示例

本文实例讲述了python gui编程。分享给大家供大家参考,具体如下:import osfrom time import sleepfrom tkinter import *from tkinter.messagebox import showinfoclass dirlist(object):def __init__(self, initdirnone):self.top tk()self.label lab…

左右伸缩_冬季装修为啥要留伸缩缝?等到天热地板开裂就晚了!合肥人注意下...

后台有粉丝问:冬天真的不适合做装修吗?假的,这句话不要再传了。每个季节都会有利有弊,只不过冬季施工过程中干燥的比较快,装修的时候对施工要求的更严格。就拿伸缩缝来说吧,冬天装修时不注意,等…

转折点(心得)

也许是刚开学不适应?反正就是心不静,给自己一天时间调整,马上好过来,加油!!!以后每天至少一道题,但是要是学到东西的题,加油!合理安排,有条不紊!转载于:https://www.cnbl…

php进入文件目录,php文件目录操作

新建文件1、先确定要写入文件的内容$content 你好;2、打开这个文件(系统会自动建立这个空文件)//假设新建的文件叫file.txt,而且在上级目录下。w表示‘写文件’,$fp下面要用到,表示指向某个打开的文件。$fp fopen(../file.txt, w);3、将内容…

python设计自定义栈类_Python如何自定义模块?Python基础教程,第十讲,自定义模块...

学完此次课程,我能做什么?通过此次课程,我们将学会如何自定义自己的模块和包,以及如何引用到自己的项目中,从而实现代码的复用。学习此次课程,需要多久?5-10分钟课程内容什么是Python的标准库&a…

windows.h和winsock2.h包含顺序问题(转)

windows.h和winsock2.h有类型重定义我是知道的,本来就一个库来说没问题,把winsock2放到windows.h前或先定义WIN32_LEAN_AND_MEAN都能解决问题但现的出了问题,自己写的一个库里要用到ws2tcpip,这个头文件第一个包含的头文件就是win…

java中软填空面试题,通过这9个Java面试题,就可以入职华为啦

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼1.Java程序的种类有(BCD )A.类(Class) B.Applet C.Application D.Servlet2.下列说法正确的有( BCD)A. 环境变量可在编译source code时指定B&#x…

红色警戒2修改器原理百科(七)

(十五)科技全开——前方高能,BOOM 其实这一小节,最晚应该在第四篇的十小节来讲述的,这样是按照一条线索来讲的,容易理解和把握笔者修改时的思路,以一点逐渐扩大。由于笔者的一些原因&#xff08…

python两个线程交替打印_三线程按顺序交替打印ABC的四种方法

建立三个线程A、B、C,A线程打印10次字母A,B线程打印10次字母B,C线程打印10次字母C,但是要求三个线程同时运行,并且实现交替打印,即按照ABCABCABC的顺序打印。二、Synchronized同步法1、基本思路使用同步块和wait、noti…

支付宝支付php代码示例,Laravel使用支付宝进行支付的示例代码

/*支付*/public function pay(){header("content-type:text/html;charsetutf8");//echo 1;die;// ******************************************************配置 start*******************************************************************************************…

关于开发中的常用手段(个人建议)

由于最近在一家外包公司 做项目 (团队开发 3个人) 有个朋友一起 我们研究出一套 相对来说 速度和效率都比较高的开发方法。 1. 搭建界面 对于一个程序来说 无疑刚上来就要看原型 看UI 看切图 所以界面是首要做的 那么我来说下做界面的常用方法仅个人看法…

wpf click事件在触摸屏上点击第一次没反应_你的PLC和你的触摸屏为什么总是通讯不上?...

三菱PLC全系列资料免费送啦!想要撩我(点击上方红字,免费领资料)很多师傅有以下这些问题,其实除去厂家自行定义的通讯方式外,我们在做项目的时候最常用的通讯方式,通讯不上无非就是这几个原因是否选择正确通讯协议(modb…

php索引数组相等,php二维数组中子数组的某一键相等,其余键值求和

需要处理的数组Array([0] > Array([uid] > 1[price] > 85.00[earnings] > 40.00)[1] > Array([uid] > 8[price] > 56.00[earnings] > 31.00)[2] > Array([uid] > 15[price] > 56.00[earnings] > 31.00)[3] > Array([uid] > 15[price…

ubuntu 开放端口_Masscan端口扫描工具使用小手册

1Masscan介绍1.1 Masscan简介1) nmap是端口扫描仪的合法王位,而今天仍然是最通用的选择。但对于纯粹的速度也有一些已经超越了它,包括scanrand,unicornscan,zmap,和现在的masscan(https://github.com/robertdavidgraha…

MFC类的结构

1. CObject类,MFC库中绝大部分类的基类,封装了MFC中的最基本机制。 运行时类信息机制/动态创建机制/序列化机制等。。。 2. CCmdtarget - 消息映射机制最基类 3. CWinThread/CWinApp- 应用程序类,负责整个程序的执行流程。 4. CDocment及子类…