• 利用Python访问Mysql数据库


      首先要明确一点,我们在Python中需要通过第三方库才能访问Mysql。

      有这样几种方式:Mysql-python(即MySQLdb)、pymysql、mysql-connector。Mysql-python是用C写的,速度最快,而后两者是用纯python写的,相对来说速度慢一点。可惜的是Mysql-python只支持到python 2.7,对python 3.X都没有支持。如果你用的是python3,就用不了Mysql-python了。本文章使用的是python 3.4,用的第三方库是pymysql。

      Pymysql的安装

      安装好pip之后。在CMD中输入命令pip install pymysql即可安装。有关于pip的安装和使用请自行百度。

      安装好pymysql后,其使用跟一般的第三方库一样,需要事先import,下面我直接给一个例子,大家可以从IDLE中实验。

    >>> import pymysql
    >>> conn=pymysql.connect(host='localhost',user='root',passwd='password',charset='utf8',port=3306)
    #port一般都是3306,charset要写utf8,不然可能会出现乱码
    >>> cur=conn.cursor()
    #查看有哪些数据库
    >>> cur.execute('show databases')
    >>> databases=[]
    >>> for i in cur:
        databases.append(i)
    >>> databases
    [('information_schema',), ('firstdb',), ('hive',), ('jeesite',), ('mysql',), ('school',), ('test',), ('test1',), ('test2015',)]
    #选择数据库
    >>> conn.select_db('test')
    #如果一开始就知道选什么数据库,可以把数据库参数加到connect的语句里:
    #conn=pymysql.connect(host='localhost',user='root',passwd='password',db='test',charset='utf8',port=3306)
    #查看有哪些表
    >>> cur.execute('show tables')
    #fetchall是获得所有的查询结果
    >>> tables_list=cur.fetchall()
    >>> tables_list
    (('user',), ('user2',), ('user3',), ('user4',), ('user5',), ('user6',), ('user7',))
    #创建table
    >>> cur.execute('create table user8(id varchar(10),name varchar(10))')
    #如果习惯于每一个colmn单独一行,可以用'''代替'
    >>> cur.execute('''create table user8(id varchar(10),
    name varchar(10))''')
    #查看表user,execute中的语句语法跟mysql中的一样
    >>> cur.execute('select * from user')
    >>> user_select_result=cur.fetchall()
    >>> user_select_result
    (('1', 'Michael'), ('11', 'ozil'), ('12', 'Giroud'), ('2', 'Henry'), ('Alexis', '17'), ('Ramsey', '16'), ('Walcott', '14'))
    >>> cur.execute('select * from user')
    #fetchone只获得第一条查询结果
    >>> user_select_result=cur.fetchone()
    >>> user_select_result
    ('1', 'Michael')
    >>> cur.execute('select * from user')
    #fetchmany(n),可以获得n条查询结果
    >>> user_select_result=cur.fetchmany(4)
    >>> user_select_result
    (('1', 'Michael'), ('11', 'ozil'), ('12', 'Giroud'), ('2', 'Henry'))
    #插入数据,注意插入语句的插入参数一定要是变量,不能是直接一个set
    >>> insert_value=('3','gibbs')
    >>> cur.execute('insert into user(id,name) values(%s,%s)',insert_value)
    >>> cur.execute('select * from user')
    >>> user_select_result=cur.fetchall()
    >>> user_select_result
    (('1', 'Michael'), ('11', 'ozil'), ('12', 'Giroud'), ('2', 'Henry'), ('3', 'gibbs'), ('Alexis', '17'), ('Ramsey', '16'), ('Walcott', '14'))
    insert_value_list=[('22','debucy'),('33','cech')]
    #插入多条数据,需要用executemany
    >>> cur.executemany('insert into user(id,name) values(%s,%s)',insert_value_list)
    >>> cur.execute('select * from user')
    >>> user_select_result=cur.fetchall()
    >>> user_select_result
    (('1', 'Michael'), ('11', 'ozil'), ('12', 'Giroud'), ('2', 'Henry'), ('22', 'debucy'), ('3', 'gibbs'), ('33', 'cech'), ('Alexis', '17'), ('Ramsey', '16'), ('Walcott', '14'))
    #只有conn.commit()后,对数据库的修改才会提交
    >>> conn.commit()
    >>> cur.execute('update user set name="Ozil" where id="11"')
    >>> user_select_result=cur.fetchall()
    >>> user_select_result
    ()
    >>> cur.execute('select * from user')
    >>> user_select_result=cur.fetchall()
    >>> user_select_result
    (('1', 'Michael'), ('11', 'Ozil'), ('12', 'Giroud'), ('2', 'Henry'), ('22', 'debucy'), ('3', 'gibbs'), ('33', 'cech'), ('Alexis', '17'), ('Ramsey', '16'), ('Walcott', '14'))
    #修改后一定要comiit,不然删除、更新、添加的数据都不会被写进数据库中。
    >>> conn.commit()
    #最后要把cur和conn都关掉
    >>> cur.close()
    >>> conn.close()
  • 相关阅读:
    dell 服务器服务编码查询方法(Win & linux)
    English Voice of <<Wish You Were Here>>
    V3
    研究2张物理网卡 1台物理服务器 3个光猫 实现的离线下载服务器微架构 (3 光猫)
    注解
    单例模式
    线程同步锁
    线程实现的两种方式
    多线程简介
    Map接口
  • 原文地址:https://www.cnblogs.com/ArsenalfanInECNU/p/4799261.html
Copyright © 2020-2023  润新知