1. 程式人生 > 其它 >Python MySQL單條資料快速入庫方法(使用 sqlacodegen)

Python MySQL單條資料快速入庫方法(使用 sqlacodegen)

使用sqlacodegen 單資料入庫 快捷

安裝

pip install sqlacodegen

根據mysql資料表格 生成入庫class 檔案

sqlacodegen.exe --tables 表名 --outfile ./a.py mysql+pymysql://kf_user:kfxiyutest@伺服器地址/Xbrl?charset=utf8

檔案下載至a.py 檢視複製入python project

$ cat a.py
# coding: utf-8
from sqlalchemy import Column, DateTime, String
from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()
metadata = Base.metadata


class CJZQSHDPRDATAEIAXBRL(Base):
    __tablename__ = 'CJZQ_SH_DPR_DATA_EIA_XBRL'
    __table_args__ = {'comment': 'DPR_DATA_EIA'}

    GUID = Column(String(36), primary_key=True, comment='記錄編碼')
    DIQU = Column(String(30), comment='地區')
    TONGJI_SJ = Column(String(30), comment='統計時間')
    RigCount = Column(String(30), comment='鑽井數量')
......

Python 檔案import

import os
import sys

proj_dir = os.path.join(os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))))
sys.path.append(proj_dir) #config 路徑
from ii.common.common import config

from sqlalchemy import create_engine, text
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, VARCHAR, DATETIME, DECIMAL, String, DateTime
from sqlalchemy.orm import sessionmaker

Base = declarative_base()

單條插入model引擎

def init_engine():
    engine = create_engine(
        "mysql+pymysql://{}:{}@{}:{}/{}".format(
            config['mysql']['user'], config['mysql']['pwd'],
            config['mysql']['host'], config['mysql']['port'], config['mysql']['db']),
        encoding=config['mysql']['charset'], echo=True)
    Base.metadata.create_all(engine)
    return engine


def insert_data_to_db(table_name, data_dict):
    session = sessionmaker(bind=init_engine())()
    data_obj = globals()[table_name](**data_dict)
    session.add(data_obj)
    session.commit()
    session.close()

Python 檔案中執行指令

insert_data_to_db('mysql 表名', datadictionary)