加入收藏 | 设为首页 | 会员中心 | 我要投稿 北几岛 (https://www.beijidao.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Python操作mysql

发布时间:2021-05-21 07:49:22 所属栏目:大数据 来源: https://www.jb51.cc
导读:pip install pyMysqL -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com 一、数据库连接及创表 #encoding: utf-8import pyMysqL# 配置基本信息db = pyMysqL.connect( host = '127.0.0.1',user = 'root',password = '123456',database = 'py

pip install pyMysqL -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com

一、数据库连接及创表

#encoding: utf-8
import pyMysqL
# 配置基本信息
db = pyMysqL.connect(
    host = '127.0.0.1',user = 'root',password = '123456',database = 'pyMysqL',port = 3306,# 有汉字的时候必须写这个
    charset='utf8'
)
# 建立连接
# 获得python执行MysqL命令的方法,也就是所说的操作游标
cursor = db.cursor()
# 用于测试
cursor.execute('select 1')
result = cursor.fetchone()
print(result)

建立数据表

# -*- coding = utf-8 -*-
# @Time : 2020/9/27 14:34
# @Author : md

import pyMysqL
# 配置基本信息
db = pyMysqL.connect(
    host = '127.0.0.1',也就是所说的操作游标
cursor = db.cursor()

sql = '''
    create table student(
        id int NOT NULL AUTO_INCREMENT,user_id int(11) NOT NULL,name varchar(255) NOT NULL,address varchar(255) NOT NULL,PRIMARY KEY(id)
    )
'''
cursor.execute(sql)
cursor.close()
db.close()
print("创建成功")

二、插入数据

#encoding: utf-8
import pyMysqL
# 配置基本信息
db = pyMysqL.connect(
    host = '127.0.0.1',database = 'pyMysqL_test',charset='utf8'
)
# 建立连接
cursor = db.cursor()
sql = "insert user(username,age,password)values('cc',20,'654321')"
# 执行sql语句
cursor.execute(sql)
# 关闭插入的sql语句
db.commit()
# 关闭连接
db.close()

如果是数据不能确定的情况下,可以使用下面这种方式

cursor = db.cursor()
# 即使这个字段是整型,这个时候也的用%s,sql = "insert user(username,password) values(%s,%s,%s)"
# 在执行sql语句的时候传入数据,传入的是元组
cursor.execute(sql,('dd',21,'222221'))
db.commit()
db.close()

批量插入多条数据

sql="insert into user values(%s,%s)"
insert=cur.executemany(sql,[(4,'wen',20),(5,'tom',10),(6,'test',30)])
print ('批量插入返回受影响的行数:',insert)

三、查询数据

使用execute()函数得到的只是受影响的行数,并不能真正拿到查询的内容。cursor对象还提供了3种提取数据的方法:fetchone、fetchmany、fetchall.。每个方法都会导致游标动,所以必须注意游标的位置。

cursor.fetchone():获取游标所在处的一行数据,返回元组,没有返回None

cursor.fetchmany(size):接受size行返回结果行。如果size大于返回的结果行的数量,则会返回cursor.arraysize条数据。

cursor. fetchall():接收全部的返回结果行

  1. fetchone():这个方法每次获取一条数据
cursor = db.cursor()

sql = 'select * from user'
cursor.execute(sql)
result = cursor.fetchone()
print(result)
# 这个切记
db.close()
  1. fetchall():这个方法接收全部的返回结果
cursor = db.cursor()
sql = 'select * from user'
cursor.execute(sql)

results = cursor.fetchall()
for result in results:
    print(result)
db.close()
  1. fetchmany(size):可以获取指定条数的数据
cursor = db.cursor()
sql = 'select * from user'
cursor.execute(sql)

results = cursor.fetchmany(3)
for result in results:
    print(result)
db.close()

四、删除数据

cursor = db.cursor()
sql = 'delete from user where id=1'
cursor.execute(sql)
# 关闭sql语句
db.commit()
db.close()

五、更新数据

cursor = db.cursor()
sql = 'update user set username="未来" where id=4'
cursor.execute(sql)
# 关闭sql语句
db.commit()
db.close()

注意:增,删,改的时候必须得执行db.commit()

六、事务

事务机制可以确保数据一致性。

事务应该具有4个属性:原子性、一致性、隔离性、持久性。这四个属性通常称为ACID特性

# sql删除记录语句
sql = "DELETE FROM EMPLOYEE WHERE AGE > %s" % (20)
try:
   # 执行sql语句
   cursor.execute(sql)
   # 向数据库提交
   db.commit()
except:
   # 发生错误时回滚
   db.rollback()

(编辑:北几岛)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读