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))

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

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