Python MySQL單條資料快速入庫方法(使用 sqlacodegen)
阿新 • • 發佈:2021-07-22
使用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)