我们需要在数据库中新建一个库,来容纳本次的操作:

(MySQL下) CREATE DATABASE test;

我们还需要安装本次的主角:

sudo pip3 install pymysql flask-sqlalchemy

1 使用 SQLAlchemy 连接数据库

现在开始吧:

from sqlalchemy import create_engine
engine = create_engine('mysql+pymysql://user:[email protected]:3306/test')
#笔记:
#连接格式很像URL,格式为 数据库名(+连接库)://username:[email protected]:port/dbname
#mysql 为Py2下连接库,pymysql 为Py3的连接库,需要提前安装
#SQLAlchemy支持SQLite,MySQL等常见数据库

2 创建一个模型

新建一个表,用于实践:

(MySQL下) USE test;
(MySQL下) CREATE TABLE test (id varchar(20) primary key, name varchar(20))
#这将创建一个新表,以id为主键(一个表只有一个主键)。两键都为varchar类型,最大20字符

下面我们来将这个表映射到Python中吧:

from sqlalchemy import Column,String
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
#一个工厂函数,它为声明性类定义构造基类,详见:
#[1]https://cloud.tencent.com/developer/ask/61905
#[2]https://blog.csdn.net/wenxuansoft/article/details/46561905
class TEST(Base):
    __tablename__ = 'test' #表名(上文创建)
    id = Column(String(20),primary_key=True)
    name = Column(String(20))
    #跟上面创建的表的键一模一样

3 连接&数据库操作

创建会话&提交

from sqlalchemy.orm import sessionmaker
DBSession = sessionmaker(bind=engine) #创建DBSession对象,绑定上文的连接对象
session = DBSession()
#得到一个会话
new_obj = TEST(id='1',name='Jiang') #一个TEST对象
session.add(new_obj) #添加到会话
session.commit() #提交修改
session.close() #关闭会话

删除&修改&查询

session = DBSession()
#查询
test_obj = session.query(TEST).filter(User.id=='1').one() #.all()查询全部符合对象,返回列表,.one()查询一个符合对象(结果不足一个或多于一个会报错)
#参考:https://blog.csdn.net/young_kp/article/details/81199185
print(type(test_obj))
print(test_obj.user)
#修改
test_obj = session.query(TEST).filter(User.id=='1').first()
test_obj.name = 'ha'
session.commit()
#删除
test_obj = session.query(TEST).filter(User.id=='1').first()
session.delete(test_obj)
session.commit()
#最后关掉会话
session.close()

说明

将上述Python3代码合成一下即可正常运行。

附:文档

Flask-SQLAlchemy中文文档:http://www.pythondoc.com/flask-sqlalchemy/
SQLAlchemy的使用(一)--基本使用方法:https://blog.csdn.net/qq_43355223/article/details/83024430 (可以翻翻他的博客,有更多更详细的用法)

文章版权:远望江来 - 人的一生当然要靠自我奋斗,当然也要考虑历史的行程

本文链接:https://chutian.bid/archives/63.html

转载请注明文章原始出处 !

添加新评论

返回顶部
Typecho 强力驱动. © Powered by Zhangtinghui. Theme by Postbird.