python 中如何创建MySQL数据库
1、在使用“pymysql”模块前需要了解创建MySQL数据库的有关命令语句;
创建数据库的命令是:
CREATE DATABASES [ IF NOT EXISTS] 库名 [DEFAULT] CHARACTER SET [=] 字符集编码;
注:中括号[ ] 内的字可以省略,库名后的编码格式,默认是utf8mb4, 这在初始化文件(my.ini)中已经设置。如果不想改变,库名后面的完全可以省去。
所以可简单的使用:CREATE DATABASES 库名;

2、获取错误信息:
① 如果创建新库的名字已经存在就会报错 error,可用 show errors 命令来获取错误的内容,如错误代码信息等,对使用python很有用。
② 其它不符合规范命名会报错,都可以用 show error 命令来获取错误信息。

1、导入pymysql 模块;
定义一个展示数据库的函数。
import pymysql
def show_databases()
这里仅是为了说明过程,所以此函数没有设置返回值,而是直接打印。
如下图例,运行函数,输出了当前所有的数据库。

2、输出的数据库中有4个是MySQL创建的数据库,可以把它过滤掉,打印root用户创建的数据库,方法如下:
① 定义一个全局列表,将MySQL创建的数据库装进去,
system_db = ['information_schema''mysql', 'performance_schema', 'sys']
②在show_databases() 函数内使用for循环及判断语句将其过滤掉。
for i in range(len(result)):
这样就仅打印了root用户建立的数据库;

3、定义一个函数create_database()用于创建数据库。
① 思路是:使用函数的递归,因为用input()函数输入数据库名称时有可能手误,或语法错误,或重复,都会报错,需要重新运行函数输入,为了避免错误,可使用try语句排除异常,然后在函数内部调用自身,进行下次输入,所以就用到递归函数的方法。
②递归的出口是,当输入0 是退出递归。
def create_database():
如下图,测试递归无误。

4、把创建数据库的代码插入其中:
conn = pymysql.connect(host='localhost', user='root', password='000')
运行函数,输入新数据库,成功建立,输入0退出。

5、然而这并不完美,因为输入的数据库名称重复,或语法错误,就会报错。
例如:下图当输入重复的数据库名称时,抛出了错误代码为1007的异常。
当输入的数据库名称不符合语法规范时,抛出了错误代码为1064的异常。
错误的类型可以查看说明,和测试出来。
那么自然就想到了使用try语句来解决这个问题。


6、用try语句解决错误。
try:
如果捕获到异常,可以调用自身,继续输入。直到输入0退出。
如果输入正确,执行else语句块,直到输入0退出。

7、也可以根据获取的错误信息,进行判断用中文显示。
因为输入数据库名称错误,无非是重复(代码1007),或语法错误(代码1064),所以可以用简短的语句来打印。
改写如下:
try:

1、为了测试效果,将这段代码编译为可执行文件。
① 确保安装了pyinstaller 模块(使用:pip install pyinstaller,非常easy);
②为了不和别的文件混淆,可以将这个文件新建一个文件夹放进去。
③打开cmd终端。cd到这个文件所在的文件夹。输入pyinstaller 文件名.py
例如:我将这文件重命名为ac.py。粘贴到E盘下的ac空文件夹中,进行编译。
编译的命令是 pyinstaller ac.py

2、编译完成生成如下文件:

3、在E:\ac\dist\ac目录下。运行 ac.exe文件。

4、启动脚本,输入名称,完成新建数据库。全部步骤完成。
如果能加上更的功能,如删除书库,表的增删改查等功能那就更方便了。
