python学习29:mysql


1. 环境配置

  1. 需要在自己的linux 中安装mariadb-server 程序(端口为3306),并且开启。注意,不能进行网络的安全设定(vim /etc/my.cf vim skip-networking=1),因为通过网络来在pycharm中进行操作。
  2. 知道你的root用户登录mysql的密码
  3. 创建westos数据库
  4. 在pycharm中下载mysql模块

2. 连接数据库并创建表

在这里插入图片描述

2. 1 connection对象

Connection对象即为数据库连接对象,在python中可以使用pymysql.connect()方法创建Connection对象,该方法的常用参数如下:

对象 用法
host 连接的数据库服务器主机名,默认为本地主机(localhost);字符串类型(String) 。
user 用户名,默认为当前用户;字符串类型(String) 。
passwd 密码,无默认值;字符串类 (String)。
db 数据库名称,无默认值;字符串类型(String) 。
port 指定数据库服务器的连接端口,默认为3306;整型(int)。
charset 连接字符集;字符串类型(String)

2. 2 Connection对象常用的方法如下:

方法 说明
cursor() 使用当前连接创建并返回游标 。
commit() 提交当前事务 。
rollback() 回滚当前事务 。
close() 关闭当前连接
cursor对象 用法
execute() 执行数据库查询或命令
executemany() 插入多条
import pymysql
# 1.连接数据库
conn = pymysql.connect(host='localhost',
                       user='root',
                       password='redhat',
                       db='westos',
                       charset='utf8'
)

# 2.创建游标对象
cur = conn.cursor()

# 3.对数据库操作
######创建数据表#############
try:
    create_sqli = 'create table hello (id int,name varchar(30));'
    cur.execute(create_sqli)
except Exception as e:
    print('创建数据表失败:',e)
else:
    print('创建数据成功')

在这里插入图片描述

3. 提交数据和插入多条数据

用法 说明
cur= conn.cursor() conn表示连接数据库,对数据的操作需要通过cursor来实现。
cur.execute(self, query, args) 执行单条sql语句,接收的参数为sql语句本身和使用的参数列表,返回值为受影响的行数

提交数据

import pymysql
# 1.连接数据库
conn = pymysql.connect(host='localhost',
                       user='root',
                       password='redhat',
                       db='westos',
                       charset='utf8',
                       autocommit='True'
)

# 2.创建游标对象
cur = conn.cursor()

# 3.对数据库操作
######插入数据
try:
    inser_sqli = "insert into hello values(3,'apple');"
    cur.execute(inser_sqli)
except Exception as e:
    print('插入数据失败:',e)
else:
    # 如果是插入数据 一定要提交的 不然数据库中找不到要插入的数据
    conn.commit()
    print('插入数据成功!!')

插如多条数据1

import pymysql
# 1.连接数据库
conn = pymysql.connect(host='localhost',
                       user='root',
                       password='redhat',
                       db='westos',
                       charset='utf8',
                       autocommit='True'
)

# 2.创建游标对象
cur = conn.cursor()

# 3.对数据库操作
#####插入多条数据
try:
    info = [(i,i) for i in range(100,1000)]
    # 第一种方式
    inser_sqli = "insert into hello values(%d,'%s');"
    for item in info:
        print('insert语句:',inser_sqli %item)
        cur.execute(inser_sqli %item)
except Exception as e:
    print('插入多条数据失败:',e)
else:
    print('插入多条数据成功')

插入多条数据2

import pymysql
# 1.连接数据库
conn = pymysql.connect(host='localhost',
                       user='root',
                       password='redhat',
                       db='westos',
                       charset='utf8',
                       autocommit='True'
)

# 2.创建游标对象
cur = conn.cursor()

# 3.对数据库操作
#####插入多条数据
try:
    info = [(i,i) for i in range(100,1000)]
    # 第二种方式
    inser_sqli = "insert into hello values('%s','%s');"
    cur.executemany(inser_sqli, info)
except Exception as e:
    print('插入多条数据失败:',e)
else:
    print('插入多条数据成功')

4. 对数据库查询

import pymysql
# 1.连接数据库
conn = pymysql.connect(host='localhost',
                       user='root',
                       password='redhat',
                       db='westos',
                       charset='utf8',
                       autocommit='True'
)

# 2.创建游标对象
cur = conn.cursor()

# 3.对数据库操作
#####查询数据库
sqli = 'select * from hello'
# 默认不返回查询结果集 返回的是数据记录数
result = cur.execute(sqli)
print(result)
a = cur.fetchone() #获取单条数据
print(a)
# 获取下一条查询结果集
print(cur.fetchone())
print(cur.fetchone())
# 获取指定个数查询结果集
print(cur.fetchmany(4))
#  取出数据库中剩余的数据
info = cur.fetchall()
print(info)

在这里插入图片描述

游标的移动

cursor.scroll(position, mode=“relative | absolute”)方法

  • 当mode='absolute’时,代表绝对移动,value就代表移动的绝对位置,value=0就代表移动到位置0处,就是结果集开头;value=3就是移动到位置3处,也就是第4条记录处。
  • mode缺省值为’relative’,代表相对移动,当mode='relative’时,value就是移动的长度,value>0向后移动(从位置0移动到位置2),value<0向前移动(比如从位置2移动到位置0)。
import pymysql
# 1.连接数据库
conn = pymysql.connect(host='localhost',
                       user='root',
                       password='redhat',
                       db='westos',
                       charset='utf8',
                       autocommit='True'
)

# 2.创建游标对象
cur = conn.cursor()

# 3.对数据库操作
#####查询数据库
sqli = 'select * from hello'
# 默认不返回查询结果集 返回的是数据记录数
result = cur.execute(sqli)
print('移动到指针最开始的地方...')
cur.scroll(0,'absolute')
print(cur.fetchmany(3))
# 继续在第三个元素后面再取两个
print(cur.fetchmany(2))
# 从当前位置向前移动两个
cur.scroll(-2,mode='relative')
print(cur.fetchmany(2))

在这里插入图片描述

发布了106 篇原创文章 · 获赞 1 · 访问量 2386

猜你喜欢

转载自blog.csdn.net/weixin_43384009/article/details/103825399