python mysqlDB的安装和使用

二十三、python mysqlDB的安装和使用

MySQLdb安装和使用

---------------------------------------------------------------

import MySQLdb  #该插件,windows中直接安装该MySQL-python-1.2.3.win-amd64-py2.7.exe即可

 

#定义获取连接所必须的属性

conf={

    'host':'192.168.216.7',

    'port':3306,

    'user':'root',

    'passwd':'root',  #connector的区别

    'db':'test',      #connector的区别

    'charset':'utf8' #默认就是utf-8

}

 

try:

    conn = MySQLdb.connect(**conf)

except MySQLdb.Error as e:

    print ('connect failed !'.format(e))

#设置conn自动提交和获取cursor

conn.autocommit(True)  #connector的区别

cursor = conn.cursor()

print conn

 

# ###################################1、创建表

try:

    sql_create = 'CREATE TABLE `user2` ( \

      `id` int(11) NOT NULL AUTO_INCREMENT, \

      `name` varchar(20) DEFAULT NULL, \

      `age` int(1) DEFAULT NULL, \

      PRIMARY KEY (`id`) \

    ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 \

    '

    # 提交表创建

    #cursor.execute(sql_create)

except MySQLdb.Error as e:

    print (u'创建表失败'.format(e))

 

########################################编写插入sql语句

try:

    sql_insert1 = 'insert into user2(name,age) VALUES("你好 ",20)'  # id为递增,不用写都可以

    # 使用cursor执行sql语句

    cursor.execute(sql_insert1)

    # b、元组方式插入

    sql_insert2 = 'insert into user2(name,age) VALUES(%s,%s) '  # %s不是格式化符,而是占位符。所以age也是%s

    data = ('你好tuple', 18)

    cursor.execute(sql_insert2, data)

    # c、使用字典方式插入

    sql_insert3 = 'insert into user2(name,age) VALUES(%(name)s,%(age)s) '  # %()s : 中的字段与字典中赋值字段相同

    data1 = {'name': "你好dict", 'age': 16}

    cursor.execute(sql_insert3, data1)

 

    ##############################################支持多次插入 使用

    sql_insert4 = 'insert into user2(name,age) VALUES(%s,%s) '  # %s不是格式化符,而是占位符。所以age也是%s

    data2 = [('你好tuple', 18), ('t', 16), ('uple', 12)]

    cursor.executemany(sql_insert4,data2)

    # 引入faker包的Factory模块 来生成伪数据

    # 安装 pip install fake-factory(老版本) 或者 pip install fake

    # 卸载 pip uninstall fake-factory 或者 pip uninstall fake ,重报错信息可知道,需要重新安装Faker

    # ImportError: The ``fake-factory`` package is now called ``Faker``

    # from faker import factory

    # userFaker = factory.Factory.create()  #pip install fake-factory包中的

    # print userFaker.name()

 

    from faker import Factory

 

    userFaker = Factory.create()

    # print userFaker.name(),userFaker.email(),userFaker.address(),userFaker.text()

    sql_insert5 = 'insert into pyuser(name,email,address,content) VALUES(%s,%s,%s,%s) '

    userFakerData = [(userFaker.name(), userFaker.email(), userFaker.address(), userFaker.text()) for i in range(1, 20)]

    # print userFakerData

    cursor.executemany(sql_insert5,userFakerData)

except MySQLdb.Error as e:

    print (u'插入数据异常.'.format(e))

#finally:

    #conn.close()

    #cursor.close()

 

######################################更新数据,,尝试批量更新???

try:

    sql_update = 'update user2 set age = 16'

    cursor.execute(sql_update)

except MySQLdb.Error as e:

    print (u'更新失败'.format(e))

# finally:

#     cursor.close()

#     conn.close()

 

 

#####################################查询

try:

    sql_select = 'select id,name from user2 where age > %s and age < %s'

    cursor.execute(sql_select, (16, 18))

    #print cursor.fetchall()

    for id,name in cursor:

        print '%s age is older than 18,and her/his id is %d'%(name, id)

 

    ##################################删除  尝试删除多个???

    sql_delete ='delete from user2 where age=%(age)s and name=%(name)s'

    deleteData = {'age': 18, 'name': u'你好tuple'}

    cursor.execute(sql_delete, deleteData)

except MySQLdb.Error as e:

    print (u'查询和删除失败'.format(e))

-----------------------------------------------------------------

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章