python练习之数据库编程

PyMySQL是在Python3.x版本中用于连接MySQL服务器的一个库
Python2中则使用MySQLdb

实验环境:

安装pumysql:
pip3 install pymysql -i https://pypi.douban.com/simple
在这里插入图片描述
查看是都安装成功:
在这里插入图片描述
推荐软件:
在这里插入图片描述

一、数据库编程

【1】数据库编程的模板:
开始—>创建connection—>获取cursor—>执行查询、执行命令、获取数据、处理数据—>关闭cursor—>关闭connection—>结束
【2】练习

  • 查询操作
#1. 导入模块,py3(pymysql),py2(mysqldb)
import pymysql

#1. 创建连接
conn = pymysql.connect(host='localhost', user='root',
                       password="westos", db='westos',
                       charset='utf8')
#2. 创建游标
cur = conn.cursor()
#3. 对数据库进行操作
#3-1). 查询操作
select_sql = "select * from users"
cur.execute(select_sql)
# 查询语句结果不会默认返回,需要通过 进行获取
print(cur.fetchall())
#4. 关闭游标
cur.close()
#5. 关闭连接
conn.close()
  • 插入语句
#1. 导入模块,py3(pymysql),py2(mysqldb)
import pymysql

#1. 创建连接
conn = pymysql.connect(host='localhost', user='root',
                       password="westos", db='westos',
                       charset='utf8')
#2. 创建游标
cur = conn.cursor()
#3. 对数据库进行操作
#3-1). 查询操作
select_sql = "select * from users"
cur.execute(select_sql)
# 查询语句结果不会默认返回,需要通过 进行获取
print(cur.fetchall())
#3-2). 插入语句
insert_sql = "insert into users values('%s', '%s')"
cur.execute(insert_sql)
print("插入数据成功")
# 注意:如果是插入和删除或者更新数据时,需要提交修改的信息到数据库中
conn.commit()
#4. 关闭游标
cur.close()
#5. 关闭连接
conn.close()

二、对象关系映射SQLAalchemy

【1】概念
OMR,即Object-Relational Mapping(对象关系映射),它的作用是在关系型数据库和业务实体对象之间做一个映射,这样,我们在具体的操作业务对象的时候,就不需要再去和复杂的SQL语句打交道,只需简单的操作对象的属性和方法。

  • SQLAalchemy是python编程语言下的一款开元软件。提供了SQL工具包及对象关系映射(ORM)工具,为高效和高性能的数据库访问设计,实现了完整的企业级持久模型。

【2】基本操作

  • 安装SQLAalchemy
    pip3 install sqlalchemy -i https://pypi.douban.com/simple
    在这里插入图片描述
    在SQLAalchemy中,session用于创建程序与数据库之间的会话。所有对象的载入和保存都需要通过session对象。
# 使用creat_engine建立同数据库的链接,返回的是一个Engine实例。
# 指向数据库的一些核心的接口
# max_overflow=5,最大链接参数为5
# echo=Ture,可以在控制台看到操作设计的SQL语言
engine = creat_engine("mysql+pymysql://root:123@172.25.0.10:3306/course?charset=utf8,
					max_overflow=5,
					echo=Ture")
# 定义缓存对象:
Session = sessionmaker(bind=engine)
session = Session()
# 声明基类,包含ORM映射中相关的类和表的信息:
Base = diclarative_base()
  • 对象关系映射
from sqlalchemy import creat_engine
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import  declarative_base
from sqlalchemy import Column,Integer, String
# 1. 创建引擎
engine = creat_engine(""mysql+pymysql://root:westos@westos_netfilesystem:3306/westos?charset=utf8,
					max_overflow=5,
					echo=Ture")
# 2. 创建session会话(用作面向对象程序和数据库之间的缓存)
Session = sessionmaker(bind=engine)
session = Session()

# 3. 重点:通过面向对象的方式对数据库进行操作(增删改查)
Base = declarative_base()
class People(Base):
    _tablename_ = 'people'
    id = Column(Integer, primary_key=Ture)
    name = Column(String(30))
    email = Column(String(30), unique=True)
   
    def __repr__(self):
    """字符串的友好展示"""
    	return "<People: %s %s %s"%(self.id, self.name, self.email)
# 创建数据库表
Base.metadata.create_all(engine)

"""
# 批量添加数据
foe i in range(10):
	peoplr(name="name%s" %(i+1), email="mail%sqq.com" %(i+1))
	session.add(p)
session.commit()
print("写入10条数据成功")
"""

# 查询数据信息
data = session.query(People).filter_by(name="name1").first()
print("找到name1的信息了。", datas)

# 删除找到的信息
session.delete(data)
session.commit()
print("删除成功")
©️2020 CSDN 皮肤主题: 游动-白 设计师:上身试试 返回首页