SQLAlchemy数据库基本操作

ORM与SQLAlchemy简介

ORM 全称 Object Relational Mapping, 翻译过来叫对象关系映射。简单的说,ORM 将数据库中的表与面向对象语言中的类建立了一种对应关系。这样,我们要操作数据库,数据库中的表或者表中的一条记录就可以直接通过操作类或者类实例来完成。

SQLAlchemy 是Python 社区最知名的 ORM 工具之一,为高效和高性能的数据库访问设计,实现了完整的企业级持久模型。

安装

sudo apt-get update
sudo pip3 install sqlalchemy

连接与创建
首先我们需要将MySQL默认的编码改为utf-8

sudo vim /etc/mysql/my.cnf

添加配置

[client]
default-character-set = utf8

[mysqld]
character-set-server = utf8

[mysql]
default-character-set = utf8

保存退出
我们启动MySQL并安装一个python与MySQL的驱动程序

sudo pip3 install pymysql
python 数据库代码
import random
from faker import Factory

from sqlalchemy import create_engine, Table
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import ForeignKey
from sqlalchemy import Column, String, Integer, Text
from sqlalchemy.orm import sessionmaker, relationship

# dialect+driver://username:password@host:port/database
# dialect [ˈdaɪəlekt] 就是指DBMS(数据库管理系统)的名称,一般可选的值有:postgresql, mysql, sqlite等
# driver就是指驱动的名称,如果不指定,SQLAlchemy会使用默认值。database就是指DBMS中的一个数据库

# create_engine函数还支持以下几个参数:
# connect_args:一个字典,用来自定义数据库连接的参数,比如指定客户端使用的字符编码。
# pool_size和max_overflow:指定连接池的大小。
# poolclass:指定连接池的实现
# echo:一个布尔值,用来指定是否打印执行的SQL语句到日志中。
# 一般来说,Engine对象会默认启用连接池
# 应用程序可以调用Engine对象的connect()方法来获得一个到数据库的连接对象;
# 然后可以在这个连接对象上调用execute()来执行SQL语句,调用begin()、commit()、rollback()来执行事务操作;
# 调用close()来关闭连接。Engine对象也有一些快捷方法来直接执行上述操作,
# 避免了每次都要调用connect()来获取连接这种繁琐的代码,比如engine.execute(), with engine.begin()等。
#


engine = create_engine('mysql+pymysql://root:123456@192.168.159.138:3306/pydb?charset=utf8')
# 定义数据模型
# 有了数据库连接后,我们就可以来定义数据模型了,也就是定义映射数据库表的Python类。在SQLAlchemy中,
# 这是通过Declarative的系统来完成的
# 要使用Declarative系统,你需要为所有映射类创建一个基类,这个基类用来维护所有映射类的元信息
Base = declarative_base()


# 定义映射类 这里的基类Base是上面我们通过declarative_base函数生成的
# 这个类的__table__属性就保存了该映射类所映射的Table对象
class UserInfo(Base):
    __tablename__ = 'userinfos'

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值