SQLAlchemy
SQLAlchemy
ORM
全称
object - Relation - mapping 对象关系映射
作用
将数据库中的一张表table,通过某种方式,转换为python中的Class或者是Class实例化得到的对象。至于是通过何种方式,我们不必计较。然后使用orm操作数据库。
Class(object) - 某种方式 - table
与Django中的model的使用方法是一样的。
Django - Model
使用
创建新的虚拟环境
创建一个干净的环境
安装SQLAlchemy
pip install SQLAlchemy
安装pymysql
pip install pymysql
创建表
Django中的ORM
Class - obj
创建数据库引擎
将所有的Class序列化成数据表
ORM操作 - CRUD
SQLAlchemy的使用
SQLAlchemy的使用方法与Django的ORM的使用方式相似,我们参考Django的使用方法进行操作。
创建Class
from sqlalchemy.ext.declarative import declarative_base from sqlalchemy import Column, INT, VARCHAR, String Base = declarative_base()
Base是ORM模型的基类。
ORM模型
- object里面的属性等同于table中创建的字段。
- Obj定义table的操作方式和属性。
class User(Base): __tablename__ = 'student' id = Column(INT, primary_key=True, autoincrement=True) name = Column(String(32), index=True)
创建数据库引擎
from sqlalchemy import create_engine engine = create_engine('mysql+pymysql://root:@127.0.0.1:3306/sqlalchemy?charset=utf8') # 注意:这里的utf8不能写成utf-8
这里要注意的是编码方式设置的部分utf8不能写成utf-8,否则将会报错。
将所有继承Base的Class序列化成数据表
Base.metadata.create_all(engine)
正确创建表完成后,会产生一个警告。这是正常的,警告如下:
C:\sqlalchemy\venv\lib\site-packages\pymysql\cursors.py:170: Warning: (1366, "Incorrect string value: '\\xD6\\xD0\\xB9\\xFA\\xB1\\xEA...' for column 'VARIABLE_VALUE' at row 484") result = self._query(query)
注意
在运行代码之前,需要先启动MySQL,然后手动创建数据库。
登录数据库
mysql -u root -p # 登录数据库
创建数据库
create database xxoo; # xxoo为数据库名称
操作
增加数据
原生sql语句
insert into 表名(字段名) values(值);
0