在之前的学习笔记中讲了如何通过sqlalchemy来连接数据库,那么以此为前提我们通过sqlalchemy来创建数据库表,如果不知道的话请看Python学习笔记(1) 使用sqlalchemy连接mysql
# encoding: utf-8
from sqlalchemy import create_engine
HOSTNAME = "127.0.0.1"
PORT = "3306"
DATABASE = "first_sqlalchemy"
USERNAME = "root"
PASSWORD = "jiaojiao"
# dialect+driver://username:password@host:port/database
DB_URI = "mysql+pymysql://{username}:{password}@{host}:{port}/{db}?charset=utf8".\
format(username=USERNAME,password=PASSWORD,host=HOSTNAME,port=PORT,db=DATABASE)
# 连接数据库
engine = create_engine(DB_URI)
declarative_base()方法返回的是一个基类,这个类放入model类中可以自行和model进行关联,创建出我们需要的数据库表
from sqlalchemy.ext.declarative import declarative_base
...
Base = declarative_base(engine)
前期的准备工作完成以后,我们就可以来学model类了
class Article(Base):
__tablename__ = "article"
id = Column(Integer,primary_key=True,autoincrement=True)
title = Column(String(50),nullable=False)
1.首先作为一个数据库表必须要有一个表名,在sqlalchemy中表名的定义为__tablename__
2.因为我们的数据库表是一个二维表,所以我们在创建表的时候必须要定义每一个列是做什么的:
2.1Column()是申明一个列,Integer表示的是这个类的数据类型为int类型
2.2primary_key则定义这个id为主键
2.3autoincrement则申明这个id类的为自增长
3.同理我们再申明一个叫title的列,类型为char的可变字符串类型,长度为50,nullable=False则申明这个列不能为null
Base.metadata.drop_all()
Base.metadata.create_all()
当我们通过Base类创建这个表时,那么这张表会自动保存在Base类中,所以我们可以通过Base.metadata.drop_all()来删除通过Base类创建的所有表
同理我们也可以通过Base.metadata.create_all()来创建新表
我们来操作一下数据库看看表是否被我们创建(因为我是在Mac环境下运行,window的可能会有写区别)
mysql -u root -p输入密码后我们进入mysql数据库对数据库进行操作
然后输入 use XXX(数据库名)
最后 show tables查看一下是否有我们创建的表
article表已经被我们成功创建出来了,为了确保这是我们创建的表,我们在进入表看看是否和我们创建的一致
从上面看和我们创建的属性一致,那么我们已经成功创建了数据库表。