m_user
create table m_user
(
id bigint not null
primary key,
username varchar(64) null,
avatar varchar(255) null,
email varchar(64) null,
password varchar(64) null,
status int(5) not null,
created datetime null,
last_login datetime null
);
create index UK_USERNAME
on m_user (username);
INSERT INTO testgroup.m_user (id, username, avatar, email, password, status, created, last_login) VALUES (1, '文章一', 'https://image-1300566513.cos.ap-guangzhou.myqcloud.com/upload/images/5a9f48118166308daba8b6da7e466aab.jpg', '[email protected]', '96e79218965eb72c92a549dd5a330112', 0, '2021-06-02 17:52:01', null);
INSERT INTO testgroup.m_user (id, username, avatar, email, password, status, created, last_login) VALUES (5, 'wu', 'wuwu', 'wuwuwu', 'wuwuwuwuwu', 0, '2021-06-02 17:52:01', '2021-06-02 17:52:01');
m_blog
create table m_blog
(
id bigint not null
primary key,
user_id bigint not null,
title varchar(255) not null,
description varchar(255) not null,
content longtext null,
created datetime not null on update CURRENT_TIMESTAMP,
status tinyint null
)
charset = utf8mb4;
INSERT INTO testgroup.m_blog (id, user_id, title, description, content, created, status) VALUES (1, 1, '文章一', '第一篇文章', '第一篇文章第一篇文章第一篇文章', '2021-06-17 17:36:11', 0);
INSERT INTO testgroup.m_blog (id, user_id, title, description, content, created, status) VALUES (2, 1, '文章一2', '第一篇文章', '第一篇文章第一篇文章第一篇文章', '2021-06-17 17:36:11', 0);
"""
@File : User.py
@Modify Time @Author @Version
------------ ------- --------
@Desciption:
"""
from sqlalchemy import Column, BIGINT, VARCHAR, INT, DATETIME, create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
import pymysql
import time
# 这里一定要加pymysql.install_as_MySQLdb(),因为sqlalchemy使用的是MySQLdb,而MySQLdb是在python2.x才使用的
pymysql.install_as_MySQLdb()
# 创建对象的基类:
Base = declarative_base()
# 定义一个对象
class User(Base):
# 表的名字
__tablename__ = "m_user"
# 接下来设计表结构
id = Column(BIGINT, primary_key=True)
username = Column(VARCHAR(64))
avatar = Column(VARCHAR(255))
email = Column(VARCHAR(64))
password = Column(VARCHAR(64))
status = Column(INT)
created = Column(DATETIME)
last_login = Column(DATETIME)
# 定义数据库信息
env = {"user": "xxxxxx", "passwd": "xxxxxx", "host": "rm-xxxxxx.mysql.rds.aliyuncs.com",
"port": 3306, "db": "testgroup"}
# 由于参数是一个dict,所以入参加**,数据库类型+数据库驱动名称://用户名:口令@机器地址:端口号/数据库名,其中数据库驱动名称可以不添加,,如果不填写,则默认为MySQLdb,但是我们python3.x使用的驱动是pymysql,所以也可以使用
# url = "mysql+pymysql://{user}:{passwd}@{host}:{port}/{db}".format(**env)
# 然后记得将pymysql.install_as_MySQLdb()注释掉
url = "mysql://{user}:{passwd}@{host}:{port}/{db}".format(**env)
# 初始化数据库连接:
engine = create_engine(url)
# 创建DBSession类型:
DBSession = sessionmaker(bind=engine)
# 创建session对象,对象可视为当前数据库连接
session = DBSession()
# 创建Query查询,filter是where条件,最后调用one()返回唯一行,如果调用all()则返回所有行:
user = session.query(User).filter(User.id == 1).one()
# 多条件查询
user2 = session.query(User).filter(User.id == 5 and User.username == 'wu').one()
# 打印user对象的类型
print(type(user))
# 提取user对象的username
print(user.username)
# 提取user2对象的username
print(user2.username)
# user对象只是一个内存地址
print(user)
# 关闭链接
session.close()
结果
文章一
wu
<__main__.User object at 0x7fe2cd01bbb0>
"""
@File : User.py
@Modify Time @Author @Version
------------ ------- --------
@Desciption:
"""
from sqlalchemy import Column, BIGINT, VARCHAR, INT, DATETIME, create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
import pymysql
import time
# 这里一定要加pymysql.install_as_MySQLdb(),因为sqlalchemy使用的是MySQLdb,而MySQLdb是在python2.x才使用的
pymysql.install_as_MySQLdb()
# 创建对象的基类:
Base = declarative_base()
# 定义一个对象
class User(Base):
# 表的名字
__tablename__ = "m_user"
# 接下来设计表结构
id = Column(BIGINT, primary_key=True)
username = Column(VARCHAR(64))
avatar = Column(VARCHAR(255))
email = Column(VARCHAR(64))
password = Column(VARCHAR(64))
status = Column(INT)
created = Column(DATETIME)
last_login = Column(DATETIME)
# 定义数据库信息
env = {"user": "xxx", "passwd": "xxxx", "host": "rm-xxxxxx.mysql.rds.aliyuncs.com",
"port": 3306, "db": "testgroup"}
# 由于参数是一个dict,所以入参加**,数据库类型+数据库驱动名称://用户名:口令@机器地址:端口号/数据库名,其中数据库驱动名称可以不添加,,如果不填写,则默认为MySQLdb,但是我们python3.x使用的驱动是pymysql,所以也可以使用
# url = "mysql+pymysql://{user}:{passwd}@{host}:{port}/{db}".format(**env)
# 然后记得将pymysql.install_as_MySQLdb()注释掉
url = "mysql://{user}:{passwd}@{host}:{port}/{db}".format(**env)
# 初始化数据库连接:
engine = create_engine(url)
# 创建DBSession类型:
DBSession = sessionmaker(bind=engine)
# 创建session对象,对象可视为当前数据库连接
session = DBSession()
# 定义一个user对象
new_user = User(id=23, username='ershisi', avatar='ershiyiyi', email='email', password='password', status=0,
created=time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()), last_login=time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))
# 将定义的user对象添加到session中
session.add(new_user)
# 提交数据,如果不提交的话,会自动rollback
session.commit()
# 关闭链接
session.close()
检查数据库发现已经新增对应的记录
"""
@File : User.py
@Modify Time @Author @Version
------------ ------- --------
@Desciption:
"""
from sqlalchemy import Column, BIGINT, VARCHAR, INT, DATETIME, create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
import pymysql
import time
# 这里一定要加pymysql.install_as_MySQLdb(),因为sqlalchemy使用的是MySQLdb,而MySQLdb是在python2.x才使用的
pymysql.install_as_MySQLdb()
# 创建对象的基类:
Base = declarative_base()
# 定义一个对象
class User(Base):
# 表的名字
__tablename__ = "m_user"
# 接下来设计表结构
id = Column(BIGINT, primary_key=True)
username = Column(VARCHAR(64))
avatar = Column(VARCHAR(255))
email = Column(VARCHAR(64))
password = Column(VARCHAR(64))
status = Column(INT)
created = Column(DATETIME)
last_login = Column(DATETIME)
# 定义数据库信息
env = {"user": "xxx", "passwd": "xxx", "host": "rm-xxx.mysql.rds.aliyuncs.com",
"port": 3306, "db": "testgroup"}
# 由于参数是一个dict,所以入参加**,数据库类型+数据库驱动名称://用户名:口令@机器地址:端口号/数据库名,其中数据库驱动名称可以不添加,,如果不填写,则默认为MySQLdb,但是我们python3.x使用的驱动是pymysql,所以也可以使用
# url = "mysql+pymysql://{user}:{passwd}@{host}:{port}/{db}".format(**env)
# 然后记得将pymysql.install_as_MySQLdb()注释掉
url = "mysql://{user}:{passwd}@{host}:{port}/{db}".format(**env)
# 初始化数据库连接:
engine = create_engine(url)
# 创建DBSession类型:
DBSession = sessionmaker(bind=engine)
# 创建session对象,对象可视为当前数据库连接
session = DBSession()
# 先筛选出用户,然后通过update方法来修改数据,update的参数是一个字典,里面对应的是每一个需要修改的字段和要修改成的值
session.query(User).filter(User.id == 23).update({"username": "wangbadan", "avatar": "nichousha"})
# 提交数据,如果不提交的话,会自动rollback
session.commit()
# 关闭链接
session.close()
检查数据库,发现id为23的数据的username和avatar已经被修改成了对应的值
"""
@File : User.py
@Modify Time @Author @Version
------------ ------- --------
@Desciption:
"""
from sqlalchemy import Column, BIGINT, VARCHAR, INT, DATETIME, create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
import pymysql
import time
# 这里一定要加pymysql.install_as_MySQLdb(),因为sqlalchemy使用的是MySQLdb,而MySQLdb是在python2.x才使用的
pymysql.install_as_MySQLdb()
# 创建对象的基类:
Base = declarative_base()
# 定义一个对象
class User(Base):
# 表的名字
__tablename__ = "m_user"
# 接下来设计表结构
id = Column(BIGINT, primary_key=True)
username = Column(VARCHAR(64))
avatar = Column(VARCHAR(255))
email = Column(VARCHAR(64))
password = Column(VARCHAR(64))
status = Column(INT)
created = Column(DATETIME)
last_login = Column(DATETIME)
# 定义数据库信息
env = {"user": "xxx", "passwd": "xxx", "host": "rm-xxx.mysql.rds.aliyuncs.com",
"port": 3306, "db": "testgroup"}
# 由于参数是一个dict,所以入参加**,数据库类型+数据库驱动名称://用户名:口令@机器地址:端口号/数据库名,其中数据库驱动名称可以不添加,,如果不填写,则默认为MySQLdb,但是我们python3.x使用的驱动是pymysql,所以也可以使用
# url = "mysql+pymysql://{user}:{passwd}@{host}:{port}/{db}".format(**env)
# 然后记得将pymysql.install_as_MySQLdb()注释掉
url = "mysql://{user}:{passwd}@{host}:{port}/{db}".format(**env)
# 初始化数据库连接:
engine = create_engine(url)
# 创建DBSession类型:
DBSession = sessionmaker(bind=engine)
# 创建session对象,对象可视为当前数据库连接
session = DBSession()
# 先筛选出用户,然后通过delete方法来删除
session.query(User).filter(User.id == 23).delete()
# 提交数据,如果不提交的话,会自动rollback
session.commit()
# 关闭链接
session.close()
检查数据库,id=23的数据已经被删除了