这里有一点要提的
这个mysql+pymysql,这个mysql会通过字符串导入对应的模块这里要预装下mysql模块:
逻辑操作:
使用create_engine创建数据库连接,
使用sessionmaker操作用于操作数据库的session。
构造一个declarative_base()的基类。
构造一个子类设置数据库表中的各个域。
最后使用metedate.create_all进行创建
源码如下:
from sqlalchemy import create_engine, Integer, String, Float
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column
#创建数据库连接
engine = create_engine("mysql+pymysql://root:密码xxxxxxx@122.51.245.141:3306/lagou?charset=utf8")
#操作数据库前创建session
Session = sessionmaker(bind=engine)
#声明一个基类
Base = declarative_base()
class LagouTables(Base):
__tablename__ = 'lagou_data'
#id,主键并且自动增长
id = Column(Integer, primary_key=True, autoincrement=True)
#岗位ID,非空字段
positionID = Column(Integer, nullable=True)
# 经度
longitude = Column(Float, nullable=False)
# 纬度
latitude = Column(Float, nullable=False)
# 岗位名称
positionName = Column(String(length=50), nullable=False)
# 工作年限
workYear = Column(String(length=20), nullable=False)
# 学历
education = Column(String(length=20), nullable=False)
# 岗位性质
jobNature = Column(String(length=20), nullable=True)
# 公司类型
financeStage = Column(String(length=30), nullable=True)
# 公司规模
companySize = Column(String(length=30), nullable=True)
# 业务方向
industryField = Column(String(length=30), nullable=True)
# 所在城市
city = Column(String(length=10), nullable=False)
# 岗位标签
positionAdvantage = Column(String(length=200), nullable=True)
# 公司简称
companyShortName = Column(String(length=50), nullable=True)
# 公司全称
companyFullName = Column(String(length=200), nullable=True)
# 公司所在区
district = Column(String(length=20), nullable=True)
# 公司福利标签
companyLabelList = Column(String(length=200), nullable=True)
# 工资
salary = Column(String(length=20), nullable=False)
# 抓取日期
crawl_date = Column(String(length=20), nullable=False)
if __name__ == '__main__':
# 创建数据表
LagouTables.metadata.create_all(engine)
创建好后对应的数据库表如下: