学习sqlalchemy其实就是学习 python中的一个ORM组件
下面可以先看看资料,如果不太理解可以看看本文,循序渐进的了解知识点。
创建表
#User.py
import sqlalchemy
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column,Integer,String
#创建引擎
engine=create_engine("mysql+pymysql://test:test123@47.244.28.93/pythonstudy",
encoding='utf-8', echo=True)
#生成ORM基类
Base=declarative_base() #生成orm基类
class User(Base):
__tablename__='user' #表名
id=Column(Integer,primary_key=True)
name=Column(String(32))
password=Column(String(32))
def __init__(self, name, password):
self.name = name
self.password = password
def set_namme(self, name):
self.name = name
def get_name(self):
return self.name
def set_pwd(self, password):
self.password = password
def get_pwd(self):
return self.password
Base.metadata.create_all(engine) #创建表结构
关键点
- List declarative_base() 函数创建基类
- 我们可以根据它定义任意数量的映射类。我们将从一个名为的表开始users,它将使用我们的应用程序为最终用户存储记录。调用的新类User将是我们映射此表的类。在类中,我们定义了有关我们将要映射的表的详细信息,主要是表名,以及列的名称和数据类型
- Base.metadata.create_all(engine)
添加表数据
直接上代码
#添加数据.py
from sqlalchemy.orm import sessionmaker
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from com.wfc.python.day10sqlalchemy.User import User
engine=create_engine("mysql+pymysql://test:test123@47.244.28.93/pythonstudy",
encoding='utf-8', echo=True)
Base=declarative_base() #生成orm基类
Session=sessionmaker(bind=engine) #这里的Session只是一个类, 而不是实例
session=Session() #创建Session类实例
ed_user=User(name='wangfangchen',password='123456')
session.add(ed_user) #插入一条实例到数据库
#插入多条实例到数据库
session.add_all(
[User(name='wendy', password='foobar'),
User(name='mary', password='xxg527'),
User(name='fred', password='blah')]
)
session.commit() #提交事物
上面code有部分注释,可以看明白,下面具体总结:
- 创建会话:ORM对数据库的“处理”是Session。当我们第一次设置应用程序时,在与create_engine() 语句相同的级别上,我们定义一个Session类,它将作为新Session 对象的工厂
Session = sessionmaker(bind=engine)
- 实例话session 会话
session = Session()
- 添加数据到数据库,通过会话session 的add和add_all方法。
ed_user=User(name='wangfangchen',password='123456')
session.add(ed_user) #插入一条实例到数据库
#插入多条实例到数据库
session.add_all(
[User(name='wendy', password='foobar'),
User(name='mary', password='xxg527'),
User(name='fred', password='blah')]
)
- 最后一定要commit,会话session.commit()
session.commit()