开始本篇
本篇分享自动创建数据库和自动导入SQL文件。
创建数据库和导入SQL的操作,咱们经常使用的方式也是在工具中直接创建和导入,如在Navicat中[新建数据库],在新建的数据库中[运行SQL文件],操作简单也方便。
本次实际运用的场景是将上篇分享中的database.sql文件,导入到新创建的数据库中,将导出和导入的自动化形成一个完整的闭环。
此次实现自动创建和导入的功能是针对上篇的database.sql文件,当初导出的时候就具有特殊性和定制性,不同的SQL文件有可能需要有些特殊地处理(比如文件编码格式等)。有借用到自己数据库的同学,如果有不成功的情况,那就需要根据实际情况在这基础上稍作优化
环境:
Pycharm
Python 3.9.18
安装:
pip install mysql-connector-python==8.1.0
pip install PyMySQL==1.1.0
导入:
import mysql.connector
import datetime
本次很简单,只分为两部分:
第一部分 自动创建数据库
第二部分 导入SQL文件
在实现以上两个部分前,要先连接MySql,和上篇导出区别的地方是,本次没有数据库,所以只是连接通MySql即可
连接MySql:
# 创建到MySQL的连接
db_config = {
'host': '127.0.0.1',
'user': 'root',
'password': '123456',
'port': 3306
}
# 连接MySql
cnx = mysql.connector.connect(**db_config)
cursor = cnx.cursor()
print(cursor)
结果:
说明已经连接成功~!
那么接下来就开始……
第一部分
自动创建数据库
创建数据库是首要前提
确定数据库的名称,尽量避免与其他数据库重名。
# 定义数据库名称
db_name = 'self_test_aa'
以防万一重名,做一个判断重名并删除的操作
# 检查数据库是否已存在
cursor.execute("SHOW DATABASES LIKE %s", (db_name,))
if cursor.fetchone() is not None:
# 数据库已存在,则删除
drop_db = f"DROP DATABASE IF EXISTS {db_name};"
cursor.execute(drop_db)
最后执行创建
# 创建新的数据库
cursor.execute('CREATE DATABASE {db_name} CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci'.format(db_name=db_name))
第二部分
导入SQL文件
首先,切到新创建的数据库下面
cursor.execute(f"USE {db_name}")
然后,导入SQL文件
换个直白的说法,就是把SQL文件中内容读出来,再执行到MySql中
# 导入SQL文件
with open('database.sql', 'r', encoding='utf-8') as f:
sql_statements = f.read().split(';')
for sql_statement in sql_statements:
if sql_statement.strip():
cursor.execute(sql_statement)
while cursor.nextset():
pass
cnx.commit()
最后,关闭连接
# 关闭连接
cursor.close()
cnx.close()
总结
阅读本篇,建议先看一下上篇分享,毕竟本次使用的’database.sql’是上篇输出的。在实践中,也是和上篇一起使用的。
源码:
# -*- coding: utf-8 -*-
import mysql.connector
# 创建到MySQL的连接
db_config = {
'host': '127.0.0.1',
'user': 'root',
'password': '123456',
'port': 3306
}
# 连接MySql
cnx = mysql.connector.connect(**db_config)
cursor = cnx.cursor()
# 定义数据库名称
db_name = 'self_test_aa'
# 检查数据库是否已存在
cursor.execute("SHOW DATABASES LIKE %s", (db_name,))
if cursor.fetchone() is not None:
# 数据库已存在,则删除
drop_db = f"DROP DATABASE IF EXISTS {db_name};"
cursor.execute(drop_db)
# 创建新的数据库
cursor.execute('CREATE DATABASE {db_name} CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci'.format(db_name=db_name))
# 切到新创建的数据库下面
cursor.execute(f"USE {db_name};")
# 导入SQL文件
with open('database.sql', 'r', encoding='utf-8') as f:
sqls = f.read().split(';')
for sql in sqls:
if sql.strip():
cursor.execute(sql)
while cursor.nextset():
pass
cnx.commit()
# 记住关闭连接
cursor.close()
cnx.close()
感兴趣的小伙伴,赠送全套Python学习资料,包含面试题、简历资料等具体看下方。
一、Python所有方向的学习路线
Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。
二、Python必备开发工具
工具都帮大家整理好了,安装就可直接上手!
三、最新Python学习笔记
当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。
四、Python视频合集
观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
五、实战案例
纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
六、面试宝典