python 批量导入到数据库 使用 .sql

9 篇文章 0 订阅
0 篇文章 0 订阅

将基础表 导入到数据库

前提条件 是sqlalchemy 的连接session 测试成功


from DB.mysql.connection import session
import os
# sql1 = "INSERT INTO `china_administration` VALUES ('1', '安徽省淮北市市辖区', '340601')"
# sql2 = "INSERT INTO `china_administration` VALUES ('2', '安徽省淮北市市辖区', '340602')"

def eachFile(filepath):
    """ 读取文件夹下面的所有文件 的路径"""
    pathDir = os.listdir(filepath)
    file_path_list = list()
    for allDir in pathDir:
        child = os.path.join('%s%s' % (filepath, allDir))
        file_path_list.append(child)
    return file_path_list
path_files_ = os.path.dirname(os.path.realpath(__file__)) + "\\files\\"
file_path_list = eachFile(path_files_)
# print(file_path_list)


for file_path in file_path_list:
    with open(file_path, 'r', encoding="utf8") as ch:
        reader = ch.readlines()

        field_list = list()
        for line in reader:
            if line.startswith("DROP"):
                db_name = line.replace("`", "").replace(";", " ").split(" ")[4]

            if line.strip().startswith("`"):
                ziduan = line.strip().replace("`", " ").split(" ")[1]
                if ziduan == "key":
                    ziduan = db_name + "." + ziduan
                field_list.append(ziduan)
        # print(field_list)
        field_str = ", ".join(f for f in field_list)
        field_str = "(" + field_str + ")"

        for line in reader:
            if line.startswith("DROP"):
                db_name = line.replace("`", "").replace(";", " ").split(" ")[4]
                sql_del = "delete from " + db_name
                session.execute(sql_del)

            if line.startswith("INSERT"):
                sql = line.strip().replace(";", "")
                s_s_sql = sql.replace("` ", field_str + "` ").replace("`", "")
                print(s_s_sql)
                session.execute(s_s_sql)
#
session.commit()

sql 文件的一部分内容

-- ----------------------------
-- Table structure for china_administration
-- ----------------------------
DROP TABLE IF EXISTS `china_administration`;
CREATE TABLE `china_administration` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(64) DEFAULT NULL,
`administration_code` varchar(6) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `administration_code` (`administration_code`)
) ENGINE=InnoDB AUTO_INCREMENT=3753 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of china_administration
-- ----------------------------
INSERT INTO `china_administration` VALUES ('1', '安徽省淮北市市辖区', '340601');
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值