找回密码
 立即注册

推荐阅读

  • 便民服务
  • 关注我们
  • 社区新手
python操作mysql

python操作mysql数据库

pymysql 库名,关于数据库操作的库

一、:pymysql下载安装

方法一:pip3 install pymysql (如图1)
方法二:在pycharm 中搜素pymysql 下载(如图2)

如图(1)

图(2)
pycharm 的setting中




二、
(1)
import pymysql #导入pymysql库====》用来连接数据库
#通过pymysql库里面的Connection这个类创建一个数据库连接对象db
(2)
打开虚拟机,开启数据库

方式一:
db = pymysql.Connection(host=‘192.168.153.130’,
user=‘root’,
password=‘123456’,
database=‘hz’,
port=3306,
charset=‘utf8’)
方式二:

db = pymysql.connect(host=“192.168.153.130”,user=“root”,passwd=“123456”,db=“hz”, port=3306,charset=‘utf8’)

#connect和Connection 两个单词都可以

解释:
host:mysql服务器ip地址
user:用户名
password:密码 (password或passwd二取一)
db:数据库名称 (db或database二取一)
port:端口号
charset= “utf-8”:字符集编码

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

操作方法:

第一步:创建游标对象
r=db.cursor() # 创建游标对象


第二步:执行对象脚本(sql语句)
r.execute(sql) #执行语句


#通过对象db用Connection这个类里面的cursor方法创建一个游标对象
#游标的作用:1、执行sql语句 2、获取执行后的结果\返回的结果会存在游标对象中

#r = db.cursor()#创建一个游标对象,通过游标象执行sql语句
#sql = ‘select * from dcs’
r.execute(sql)#执行sql语句

注解:1、execute()方法是代表执行


#通过游标获取结果的第一行数据(fetchone)

import pymysql #或者引用pymysql
db=pymysql.Connection(host=“192.168.153.130”,user=“root”,passwd=“123456”,db=“hz”, port=3306,charset=‘utf8’)
r1=db.cursor() #游标对象
sql1= “select * from student2”#sql语句
r1.execute(sql1) #执行语句
one=r1.fetchone() #游标获取并占用一条数据 ,就是表示显示第一行数据
print (one)
print(type(one))

----------------------------------------------------------------------------

#获取剩余的结果中所有数据(fetchall)

import pymysql #或者引用pymysql
db = pymysql.Connection(host=“192.168.153.130”,user=“root”,passwd=“123456”,db=“hz”, port=3306,charset=‘utf8’)
r=db.cursor() #游标对象
sql1= “select * from student2”#sql语句
r.execute(sql1) #执行语句
all=r.fetchall() #游标获取未被占用的所有数据.
for i in all: #for循环遍历出来,
print (i)

备注:也可以使用直接打印出来
print(all)



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

指定获取剩余结果中的数据fetchmany(size=3)

import pymysql #或者引用pymysql
db = pymysql.Connection(host=“192.168.153.130”,user=“root”,passwd=“123456”,db=“hz”, port=3306,charset=‘utf8’)
r3=db.cursor() #游标对象
sql1= “select * from student2”#sql语句
r3.execute(sql1) #执行语句
u=r3.fetchmany(size=3) #游标获取剩余结果数据中的条数,根据size设置数量.
for i in u:
print (i)
print(u)

【备注:size=3表示指定获取剩余3条数据】


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

#执行删除符合条件的数据,并且查询

import pymysql #或者引用pymysql
db=pymysql.connect(“192.168.153.130”,“root”,“123456”,“hz”,3306,charset=‘utf8’) #连接数据库
r=db.cursor() #游标对象
sql4=“delete from student2 where id=6”
#r.execute(sql4) #删除符合条件的数据
#备注:查看数据库中删除的数据


#--------------------------------
#如需要使用语句查看,如下
select_sql = ‘select * from student2’ #定义一个查询的sql语句(查看删除后的数据)
r.execute(select_sql)
u= r.fetchall()
for i in u:
print (i)


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

#查询更新后的数据

import pymysql #或者引用pymysql
db=pymysql.connect(“192.168.153.130”,“root”,“123456”,“hz”,3306,charset=‘utf8’) #连接数据库
r=db.cursor() #游标对象
sql1=“select count(*) from student2” #sql语句
r.execute(sql1)
all=r.fetchall() #游标获取未被占用的所有数据.
print (all)


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

import pymysql
db = pymysql.connect(‘192.168.153.130’,‘root’,‘123456’,‘hz’,3306,charset=‘utf8’)
cursor = db.cursor()
sql = “SELECT * FROM student2;”
print(cursor.execute(sql))
print(cursor.fetchall())
try:
cursor.execute(sql)
db.commit()
print(“插入成功”)
except:
print(“插入失败”)
db.rollback()
cursor.close()
db.close()



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

以下案例方法一一样:

import pymysql
class Db_Utils:

def __init__(self,host,user,passwd,db,port,):
    self.host = host
    self.user = user
    self.passwd = passwd
    self.db =db
    self.port = port
def get_connection(self):   # 实例方法
    '''创建数据库的连接对象'''
    db = pymysql.connect(self.host,self.user,self.passwd,self.db,self.port,charset='utf8')
    return db

#讲解:开始封装查询一条数据实例的方法
def find_one(self,sql):
‘’‘封装查询一条数据的实例方法’’’
db = self.get_connection() #拿到数据库连接对象
cursor = db.cursor() #创建游标对象
cursor.execute(sql)
one = cursor.fetchone() #拿到第一行的数据
return one
def find_all(self,sql):
‘’‘封装查询所有数据的实例方法’’’
db = self.get_connection() # 拿到数据库连接对象
cursor = db.cursor() # 创建游标对象
cursor.execute(sql)
all = cursor.fetchall() # 拿到所有的数据
return all

if name == ‘main’:
d = Db_Utils(host = “192.168.153.130”,user=“root”,passwd=“123456”,db=“hz”, port=3306)
#print (d.find_one('select * from student2 '))
print(d.find_all('select * from student2 '))

=============================================================================================
import pymysql
class Db():
def init(self,host,user,passwd,db,port,):
self.host=host
self.user=user
self.passwd=passwd
self.db=db
self.port=port
def lianjie(self):

   db=pymysql.Connection(self.host,self.user,self.passwd,
                         self.db,self.port,charset="utf8")
   return db
def one(self,sql):
    db=self.lianjie()
    r=db.cursor()
    r.execute(sql)
    one1=r.fetchone()
    print(one1)
def many(self,sql):
    db = self.lianjie()
    r = db.cursor()
    r.execute(sql)
    one2 = r.fetchmany(size=2)
    print(one2)
def all(self,sql):
    db = self.lianjie()
    r = db.cursor()
    r.execute(sql)
    one3 = r.fetchall()
    print(one3)
if name == ‘main’:
d=Db(host=“192.168.153.130”,
user=“root”,passwd=“123456”,port=3306,
db=“hz”)
# d.one(“select * from student2”)
#d.many(“select * from student2”)
d.all(“select * from student2”)

以上案例报错


====================================
案例3:
import pymysql
class Db():
def init(self,host,user,passwd,db,port,):
self.host=host
self.user=user
self.passwd=passwd
self.db=db
self.port=port
def lianjie(self):
db=pymysql.Connection(host=self.host,user=self.user,passwd=self.passwd,
db=self.db,port=self.port,charset=“utf8”)
return db
def one(self,sql):
db=self.lianjie()
r=db.cursor()
r.execute(sql)
one1=r.fetchone()
print(one1)
def many(self,sql):
db = self.lianjie()
r = db.cursor()
r.execute(sql)
one2 = r.fetchmany(size=2)
print(one2)
def all(self,sql):
db = self.lianjie()
r = db.cursor()
r.execute(sql)
one3 = r.fetchall()
print(one3)
if name == ‘main’:
d=Db(host=“192.168.157.129”,
user=“root”,passwd=“123456”,port=3306,
db=“hz”)
# d.one(“select * from dept”)
d.many(“select * from dept”)
#d.all(“select * from dept”)





分享至 : QQ空间
收藏

0 个回复

您需要登录后才可以回帖 登录 | 立即注册