python-day07-mysql

真机下载mariadb并初始化(设置个密码即可)

1.创建数据表

import pymysql

# 1.连接数据库
conn = pymysql.connect(host='localhost',
                       user='root',
                       password='123',
                       db='westos',
                       charset = 'utf8'
)
# 2.创建游标对象
cur = conn.cursor()
# 3.对数据库进行操作
# 1).#########创建数据表
try:
    create_sqli = "create table hello (id varchar(5),name varchar(30));"
    print(cur.execute(create_sqli))
except Exception as e:
    print('创建数据表失败',e)
else:
    print('创建数据表成功')

结果:

在这里插入图片描述

2.插入数据

2.1插入单条数据

import pymysql

# 1.连接数据库
conn = pymysql.connect(host='localhost',
                       user='root',
                       password='123',
                       db='westos',
                       charset = 'utf8',
                       # autocommit='True' #必须提交,用此命令或者下方的conn.commit()均可
)
# 2.创建游标对象
cur = conn.cursor()
# 3.对数据库进行操作
# 1).#########创建数据表
try:
    insert = "insert into hello values(4,'grape');" #(3,'apple')是用autocommit()提交的数据
    cur.execute(insert)
    conn.commit()#提交插入的数据
except Exception as e:
    print('创建数据表失败',e)
else:
    print('创建数据表成功')

在这里插入图片描述
2.2插入多条数据

import pymysql
# 1.连接数据库
conn = pymysql.connect(host='localhost',
                       user='root',
                       password='123',
                       db='westos',
                       charset = 'utf8',
                       autocommit='True'
)
# 2.创建游标对象
cur = conn.cursor()
# 3.对数据库进行操作
# 1).#########创建数据表
try:
    #第一种方式
    # info1=[(i,i) for i in range(1,3)]
    # insert_sqli="insert into hello values(%d,%s);"
    # for item in info1:
    #     print('insert语句:',insert_sqli %(item))
    #     cur.execute(insert_sqli %(item))
    #第二种方式
    info2=[(i,i) for i in range(3,6)]
    insert_sql="insert into hello values(%s,%s);"
    cur.executemany(insert_sql,info2) #第二种方式插入列表时executemany
except Exception as e:
    print('创建数据表失败',e)
else:
    print('创建数据表成功')

在这里插入图片描述

3.数据表的查看

import pymysql
# 1.连接数据库
conn = pymysql.connect(host='localhost',
                       user='root',
                       password='123',
                       db='westos',
                       charset='utf8',
                       autocommit='True'
                       )
# 2.创建游标对象
cur = conn.cursor()
# 3.对数据库进行操作
# 1).#########查询数据库
sqli = 'select name from hello where id=4'
# 默认不返回查询结果集,返回数据记录数
a = cur.execute(sqli) #返回符合条件的记录数
print(a)
a = cur.fetchone()  #返回结果
print(a)

在这里插入图片描述
查看指定位置内容:

import pymysql
# 1.连接数据库
conn = pymysql.connect(host='localhost',
                       user='root',
                       password='123',
                       db='westos',
                       charset='utf8',
                       autocommit='True'
                       )
# 2.创建游标对象
cur = conn.cursor()
# 3.对数据库进行操作
# 1).#########查询数据库
sqli = 'select * from hello'
print(cur.execute(sqli))#返回符合条件个数

print(cur.fetchone())# 获取下一个查询结果集
print(cur.fetchone())

print(cur.fetchmany(2))# 获取指定个数查询结果集,从当前指针开始

info = cur.fetchall()#获取所有结果,从当前指针开始到最后
print(info)

在这里插入图片描述
执行结果:
在这里插入图片描述

4.数据表的指针移动

可以通过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='123',
                       db='westos',
                       charset='utf8',
                       autocommit='True'
                       )
# 2.创建游标对象
cur = conn.cursor()
# 3.对数据库进行操作
# 1).#########查询数据库
sqli = 'select * from hello'
cur.execute(sqli)
#移动游标指针
print(cur.fetchmany(3)) #此时指针位于3
print('正在移动指针到最开始的地方....')
cur.scroll(0,'absolute')#此时指针位于0
print(cur.fetchmany(2)) #位于2
cur.scroll(-2,mode='relative') #移到0
print(cur.fetchmany(2)) #位于2(打印2个数据,指针向后移动2)
cur.scroll(3,mode='relative') #以当前位置(2)为基准,向后移动3,此时位于5
print(cur.fetchmany(2)) #打印2个,也就是打印第6和第7个
conn.close() #关闭

在这里插入图片描述
在这里插入图片描述

5.数据库的应用

“”"
数据库应用
随机生成100个人名和对应的密码;
人名由三个汉字或者2个汉字组成,
姓 = [许, 张, 赵, 钱, 孙, 李, 朱, 杨]
名 = [彬, 群, 宁, 盼, 龙, 欢, 丹]
密码统一6位, 由字母和字符组成;
存储上述用户信息到数据库中, 保存在数据库users中的userinfo表中;
“”"

import random
import string
import pymysql
from random import choice as choice
def create_name():
    first=['孙','杨','薛','梁','马','李','刘']
    second=['丹','丽','国','强','斌','娟']
    third=['丹','丽','国','强','斌','娟','']
    name=choice(first)+choice(second)+choice(third)
    return name
# print(create_name())
def create_passwd(count=6):
    a=string.ascii_letters
    b=string.digits
    c=random.sample(a+b,count)
    return ''.join(c)
# print(create_passwd())
def main():
    conn=pymysql.connect(host='localhost',
                         user='root',
                         passwd='123',
                         db='westos',
                         charset='utf8',
                         autocommit='True'
    )
    #2创建游标对象
    n = int(input('请输入你想插入几条数据:'))
    cnn=conn.cursor()
    for i in range(n):
        create_sqli = "insert into hello values('%s','%s');" %(create_name(),create_passwd())#必须在%s两边加''
        cnn.execute(create_sqli)
main()

此时运行程序会报点错。但是查看表已经添加上:
在这里插入图片描述如何解决?
为什么会显示乱码,因为表的某些格式不是utf8
在这里插入图片描述输入指令将此表格式转化为utf8:

alter table hello convert to character set utf8;

再次运行程序,就不报错了:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值