python建立数据库_python 中如何创建MySQL数据库

1

导入pymysql 模块;

定义一个展示数据库的函数。

import pymysql

def show_databases()

conn = pymysql.connect(host='localhost',

user='root',

password='000')

cursor = conn.cursor()

cursor.execute('show databases;')

result = cursor.fetchall()

cursor.close()

conn.close()

print(result)

show_databases()

这里仅是为了说明过程,所以此函数没有设置返回值,而是直接打印。

如下图例,运行函数,输出了当前所有的数据库。

4d3d2ab33c4133ba1790a0c86a37c97623bc2f6b.jpg?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_500%2Climit_1

2

输出的数据库中有4个是MySQL创建的数据库,可以把它过滤掉,打印root用户创建的数据库,方法如下:

① 定义一个全局列表,将MySQL创建的数据库装进去,

system_db = ['information_schema''mysql', 'performance_schema', 'sys']

②在show_databases() 函数内使用for循环及判断语句将其过滤掉。

for i in range(len(result)):

if result[i][0] not in system_db:

print(f'数据库名称: {result[i][0]}')

这样就仅打印了root用户建立的数据库;

35f2224133bad341c6ac4282427622bc7cc52c6b.jpg?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_500%2Climit_1

3

定义一个函数create_database()用于创建数据库。

① 思路是:使用函数的递归,因为用input()函数输入数据库名称时有可能手误,或语法错误,或重复,都会报错,需要重新运行函数输入,为了避免错误,可使用try语句排除异常,然后在函数内部调用自身,进行下次输入,所以就用到递归函数的方法。

②递归的出口是,当输入0 是退出递归。

def create_database():

print('-' * 50)

print('当前数据库:')

show_databases()

print('-' * 50)

name = input('输入要创建的数据库名称,或输入 0 退出!:')

if name == '0':

show_databases()

return

print('创建数据库')

create_database()

如下图,测试递归无误。

3d002dbad341037d27e66ac3a9bc7dc5ce672d6b.jpg?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_500%2Climit_1

4

把创建数据库的代码插入其中:

conn = pymysql.connect(host='localhost', user='root', password='000')

cursor = conn.cursor()

cursor.execute('create database %s' % name)

运行函数,输入新数据库,成功建立,输入0退出。

4d3d2ab33c4133ba1793a0c86a37c97623bc2f68.jpg?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_500%2Climit_1

5

然而这并不完美,因为输入的数据库名称重复,或语法错误,就会报错。

例如:下图当输入重复的数据库名称时,抛出了错误代码为1007的异常。

当输入的数据库名称不符合语法规范时,抛出了错误代码为1064的异常。

错误的类型可以查看说明,和测试出来。

那么自然就想到了使用try语句来解决这个问题。

35f2224133bad341c6af4282427622bc7cc52c68.jpg?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_500%2Climit_1

3d002dbad341037d27e56ac3a9bc7dc5ce672d68.jpg?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_500%2Climit_1

6

用try语句解决错误。

try:

cursor.execute('create database %s' % name)

except Exception:

cursor.execute('show errors')

error = cursor.fetchone()

print(error)

create_database()

else:

print('新数据库【%s】创建成功!' % name)

create_database()

如果捕获到异常,可以调用自身,继续输入。直到输入0退出。

如果输入正确,执行else语句块,直到输入0退出。

32fbcd41037de1370ea48109f6c5cf672a5f2a68.jpg?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_500%2Climit_1

7

也可以根据获取的错误信息,进行判断用中文显示。

因为输入数据库名称错误,无非是重复(代码1007),或语法错误(代码1064),所以可以用简短的语句来打印。

改写如下:

try:

cursor.execute('create database %s' % name)

except Exception:

cursor.execute('show errors')

error = cursor.fetchone()

if error[1] == 1007:

print('此数据库已经存在!')

create_database()

elif error[1] == 1064:

print('命名数据库语法错误!')

create_database()

else:

print('输入异常!')

create_database()

else:

print('新数据库【%s】创建成功!' % name)

create_database()

d2001d7de137c976ea6ede7044672b5fd4462b68.jpg?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_500%2Climit_1

END

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值