美文网首页mysql我的Python自学之路
用python对Mysql做坏坏的事:联接与新建

用python对Mysql做坏坏的事:联接与新建

作者: 三层肚腩君 | 来源:发表于2017-03-01 11:52 被阅读25次

使用的是支持3.0以上mysql.connector模块。因为这货是安装Mysql时自带的,不用满世界去找。官方手册在:https://dev.mysql.com/doc/connector-python/en/connector-python-example-ddl.html
本笔记是对是官方手册的瞎鸡儿理解,正文在注释中

使用方法

链接数据库

官方介绍了三种链接方法。本着人之初,性本懒的特性,就学最后一种吧。

import mysql.connector

config={'host':'127.0.0.1',#默认127.0.0.1
        'user':'root',
        'password':'password',
        'port':3306 ,#默认即为3306
        'database':'test1',#这里似乎是选择数据库。后面有类似的操作,可以删掉。
        'charset':'utf8'#默认即为utf8,说是为了更好的处理中文,也许吧。
        }  #默认值就是安装的时候,一路下一步,没有瞎鸡吧乱设置。
#下面就厉害了,用了python异常处理的语句。感觉一下了就高端了几个级数。哈哈
#这玩意执行try语句的内容,不成就把错误返回到python客户端。不用的话,好像就报错而已。
#就当是作文模版,随时用用,也不是什么坏事。
try:
  cnn=mysql.connector.connect(**config)
  cursor = cnn.cursor()  #这句话是很重要的,获取光标。有了它才能进行操作。
  print('Yeah!you connceted!')
except mysql.connector.Error as e:
  print('connect fails!{}'.format(e))  
#这里是Python中格式化输出的内容。一直有%的方法,没什么地方要用这个东西。

手册里还有这么一句:

If you have lots of connection arguments, it's best to keep them in a dictionary and use the ** operator

大概就是可以用在多个链接请求时吧。摊手。

创建表单

之前看网上的都是只能一次创一个,看了官方手册才知道创建多个也不是多难的事。

tables = {}    #先建一个空字典,再把一个一个表单向里塞。
#但是为什么在Python中就不用;来结束语句呀。每句的双引号又是什么鬼呀。diao大的萌妹给说声。
tables['employees'] = (        
    "create table `employees` ("
    "  `emp_no` int(11) not null auto_increment,"
    "  `birth_date` date not null,"
    "  `first_name` varchar(14) not null,"
    "  `last_name` varchar(16) not null,"
    "  `gender` enum('m','f') not null,"
    "  `hire_date` date not null,"
    "  primary key (`emp_no`)"
    ") engine=innodb")  #声明引擎是什么鬼,感觉不用这句也行的。

tables['departments'] = (
    "create table `departments` ("
    "  `dept_no` char(4) not null,"
    "  `dept_name` varchar(40) not null,"
    "  primary key (`dept_no`), unique key `dept_name` (`dept_name`)"
    ") engine=innodb")

tables['salaries'] = (
    "create table `salaries` ("
    "  `emp_no` int(11) not null,"
    "  `salary` int(11) not null,"
    "  `from_date` date not null,"
    "  `to_date` date not null,"
    "  primary key (`emp_no`,`from_date`), key `emp_no` (`emp_no`),"
    "  constraint `salaries_ibfk_1` foreign key (`emp_no`) "
    "     references `employees` (`emp_no`) on delete cascade"
    ") engine=innodb")

#下面是创建database的函数。
db_name = 'test2'
def create_database(cursor):
    try:
        cursor.execute(
            "create datebase if not exists {} default character set 'utf8'".format(db_name))
             # if not exists是我自己加的,可以在不存在时创建,在存在时不会报错。下面的话就有点多余了,也许。
    except mysql.connector.Error as e:
        print("Failed create datebase:{}".format(e))

try:
    cnn.database = db_name  #这里应该是切换数据库。之前还傻傻的去执行use database;
except mysql.connector.Error as e:
    if e.errno == errorcode.ER_BAD_DB_ERROR:
        create_database(cursor)
        cnn.database = db_name
    else:
        print(e)

for name,ddl in tables.items():   
#迭代字典的键值。版本不同,后面的方法也不一样。不知道手册是怎么用3.x的版本执行了2.x方法。黑人问号?
    try:
        print('create table {}:'.format(name),end='')#加上end只是为了免得瞎机吧换行。
        cursor.execute(ddl)
    except mysql.connector.Error as e:
        if e.errno == errorcode.ER_TABLE_EXISTS_ERROR:
            print('already exists.')
        else:
            print(e.msg)
    else:
        print('OK')

相关文章

  • 用python对Mysql做坏坏的事:联接与新建

    使用的是支持3.0以上mysql.connector模块。因为这货是安装Mysql时自带的,不用满世界去找。官方手...

  • 做点“坏”事

    时不时做点坏事。有益意身体健康。 一个在社会上有头有脸的人物。一个在公司里面混得很开的人。一个生意做得很好,具备一...

  • 致真实的自己

    人一辈子会遇到形形色色的人和事,有好的也有坏的,好的会让你用余生缅怀和追忆,坏的最好尽快忘掉,但不管好与坏,善与恶...

  • 2018-05-31

    男人最喜欢做的事-让坏女人从良,把好女人变坏 女人最喜欢做的事-和坏男人相处,把好男人当备胎

  • MySQL优化 JOIN语法和JOIN算法

    本文问题 什么是外联接,什么是内联接? MySQL中的JOIN语法与标准SQL语法有什么不同? MySQL Joi...

  • 坏坏对运营的理解

    做为一个互联网运营新秀的浅谈,互联网运营从宏观角度来讲,它就是通过一系列手段方式和资源投入 ,比如(优秀的文案内容...

  • 思想的火花

    不要在内心深处给任何事物贴上好与坏的标签。好与坏只是相对而言。你认定的事,不一定对。很多...

  • 为了抗议上班,这两个设计师叫你把套套穿在身上....

    小坏被猫咬的衰事,相信坏友们都知道了。 其实最近小坏压力也特别大,刚上班就被逼着做年计划,烦得小坏只想把报表往地上...

  • 谁的生活不是好好坏坏坏坏坏坏坏坏坏坏坏的呀

    01 以前总是提及梦想,后来阿,才发现,诗和远方是建立在物质基础之上的,这是血淋淋的现实。古往今来大家总觉得文人墨...

  • 内疚

    当你做一件事,完全预料到它的坏结果之时,或者完全预料不到它的坏结果之时,坏结果发生了,你不会内疚...

网友评论

    本文标题:用python对Mysql做坏坏的事:联接与新建

    本文链接:https://www.haomeiwen.com/subject/gnyqgttx.html