sqlalchemy 使用体验(一) 安装和链接数据库

sqlalchemy 使用体验(一) 安装和链接数据库

sqlalchemy 是python web 最为流行的orm之一,甚至flask 有专门的flask-sqlalchemy 拓展来帮助程序员使用。使用orm的好处有很多这里就不在赘述,反正会来看这种文章的肯定也是知道的。下面就简单写点使用的体验。

1 安装

    pip install sqlalchemy

2

安装完成之后就进入到最基本的使用,python3 基本都自带了sqlite,接下来就以sqlite为例

1. 和数据库链接

from sqlalchemy import create_engine
engine = create_engine('sqlite:///blog.db', echo=True)

engine 是作为数据库的一个链接,作为一个与数据库交互的核心接口,你可以通过这个接口转换成sql语句和数据库进行交互。

2. 建立声明映射

建立连接后,需要建立一个声明映射,通过这个映射可以将python class 与数据库的table 联系起来

from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base(bind=engine)

也可以不在Base声明时指定bind ,但那是另一个话题 Base 在声明完成后就可以作为基类被模型类继承,接下来我们写一个用户类

class User(Base):
    __tablename__ = 'users'

    id = Column(Integer, primary_key=True)
    name = Column(String)
    email = Column(String)
    passwd = Column(String)

    def __repr__(self):
        return '<User(id ={}, name={}, email={},passwd={}>'.format(self.id, self.name, self.email, self.passwd)

然后使用

Base.metadata.create_all()

来创建数据库表

python models.py
2018-10-10 12:42:11,759 INFO sqlalchemy.engine.base.Engine SELECT CAST('test plain returns' AS VARCHAR(60)) AS anon_1
2018-10-10 12:42:11,759 INFO sqlalchemy.engine.base.Engine ()
2018-10-10 12:42:11,762 INFO sqlalchemy.engine.base.Engine SELECT CAST('test unicode returns' AS VARCHAR(60)) AS anon_1
2018-10-10 12:42:11,762 INFO sqlalchemy.engine.base.Engine ()
2018-10-10 12:42:11,763 INFO sqlalchemy.engine.base.Engine PRAGMA table_info("users")
2018-10-10 12:42:11,763 INFO sqlalchemy.engine.base.Engine ()
2018-10-10 12:42:11,764 INFO sqlalchemy.engine.base.Engine
CREATE TABLE users (
        id INTEGER NOT NULL,
        name VARCHAR,
        email VARCHAR,
        passwd VARCHAR,
        PRIMARY KEY (id)
)