[python zip]Python 操作MySQL详解以及实例介绍

更新时间:2021-06-30    来源:python    手机版     字体:

【www.bbyears.com--python】

Python 操作MySQL详解及实例

使用Python进行MySQL的库主要有三个,Python-MySQL(更熟悉的名字可能是MySQLdb),PyMySQL和SQLAlchemy。

Python-MySQL资格最老,核心由C语言打造,接口精炼,性能最棒,缺点是环境依赖较多,安装复杂,近两年已停止更新,只支持Python2,不支持Python3。

PyMySQL为替代Python-MySQL而生,纯python打造,接口与Python-MySQL兼容,安装方便,支持Python3。

SQLAlchemy是一个ORM框架,它并不提供底层的数据库操作,而是要借助于MySQLdb、PyMySQL等第三方库来完成,目前SQLAlchemy在Web编程领域应用广泛。

安装

简单的方式:

 代码如下 pip install pymysql

如果无法联网,需要进行离线安装,例如:

 代码如下 pip install pymysql-x.x.x.tar.gz

导入

 代码如下 importpymysql

连接

 

 代码如下

defconnect_wxremit_db():

  returnpymysql.connect(host=ཆ.123.5.28',

              port=3306,

              user='root',

              password='root1234',

              database='db_name',

              charset='latin1')

 

查询

 

 代码如下

defquery_country_name(cc2):

  sql_str=("SELECT Fcountry_name_zh"

        +" FROM t_country_code"

        +" WHERE Fcountry_2code='%s'"%(cc2))

  logging.info(sql_str)

  

  con=mysql_api.connect_wxremit_db()

  cur=con.cursor()

  cur.execute(sql_str)

  rows=cur.fetchall()

  cur.close()

  con.close()

  

  assertlen(rows)==1,'Fatal error: country_code does not exists!'

  returnrows[0][0]

 

简单插入

 

 代码如下

definsert_file_rec(self, file_name, file_md5):

    con=mysql_api.connect_wxremit_db()

    cur=con.cursor()

    try:

      sql_str=("INSERT INTO t_forward_file (Ffile_name, Ffile_md5)", 

            +" VALUES ('%s', '%s')"%(file_name, file_md5))

      cur.execute(sql_str)

      con.commit()

    except:

      con.rollback()

      logging.exception('Insert operation error')

      raise

    finally:

      cur.close()

      con.close()

 

批量插入

 

 代码如下

remit_ids=[(񟡂','CAD'), (񠦞','HKD')]

  

con=mysql_api.connect_wxremit_db()

    cur=con.cursor()

    try:

        cur.executemany("INSERT INTO t_order (Fremit_id, Fcur_type, Fcreate_time"

                        +" VALUES (%s, %s, now())", new_items)

        assertcur.rowcount==len(remit_ids),'my error message'

        con.commit()

    exceptException as e:

        con.rollback()

        logging.exception('Insert operation error')

    finally:

        cur.close()

        con.close()

 

更新

 

 代码如下

defupdate_refund_trans(self, remit_id):

   con=mysql_api.connect_wxremit_db()

   cur=con.cursor()

   try:

     sql_str=("SELECT Fremit_id"

           +" FROM t_wxrefund_trans"

           +" WHERE Fremit_id='%s'"%remit_id

           +" FOR UPDATE")

     logging.info(sql_str)

 

     cur.execute(sql_str)

     assertcur.rowcount==1,'Fatal error: The wx-refund record be deleted!'

 

     sql_str=("UPDATE t_wxrefund_trans"

           +" SET Fcheck_amount_flag=1"

           +", Fmodify_time=now()"

           +" WHERE Fremit_id='%s'"%remit_id

     logging.info(sql_str)

     cur.execute(sql_str)

 

     assertcur.rowcount==1,'The number of affected rows not equal to 1'

     con.commit()

   except:

     con.rollback()

     logging.exception('Update operation error')

     raise

   finally:

     cur.close()

     con.close()

 

PyMySQL已经相当成熟,和Python-MySQL一样,它在很多Linux发行版本中都是可选的安装组件。

本文来源:http://www.bbyears.com/jiaocheng/126807.html

猜你感兴趣

热门标签

更多>>

本类排行