这里有一点要提的
这个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)
创建好后对应的数据库表如下: