zoukankan      html  css  js  c++  java
  • Python3连接MySQL

    Python连接MySQL的工具类

    目前主要有以下这些

    MySQLDB http://mysql-python.sourceforge.net/MySQLdb.htmlhttps://github.com/farcepest/MySQLdb1https://github.com/farcepest/moist

    PyMySQL/mysqlclient-python https://github.com/PyMySQL/mysqlclient-python

    PyMySQL/PyMySQL https://github.com/PyMySQL/PyMySQL

    mysql-connector-python https://github.com/mysql/mysql-connector-python

    其中, MySQLDB是用python包装的底层使用C写的连接器, 两个版本MySQLDB1, moist都已经不再更新.
    mysqlclient-python 和 PyMySQL都是同一个作者维护的, 一个是基于C的连接器, 另一个是纯Python的连接器, 这个是现在用得最多的.
    mysql-connector-python是Oracle官方团队写的一个纯python的连接器, 性能和PyMySQL差不多, 另外因为license问题不能直接通过PyPi安装.

    如果对性能要求较高, 可以采用mysqlclient-python, 如果只是普通使用, 可以采用PyMySQL

    PyMySQL的安装

    pip3 install pymysql
    

    使用PyMySQL

    查单条

    import pymysql
    
    db = pymysql.connect("localhost","testuser","test123","TESTDB" )
    cursor = db.cursor()
    cursor.execute("SELECT VERSION()")
    data = cursor.fetchone()
    print ("Database version : %s " % data)
    db.close()
    

    查多条

    import pymysql
    
    db = pymysql.connect("localhost","testuser","test123","TESTDB" )
    cursor = db.cursor()
    sql = "SELECT * FROM EMPLOYEE WHERE INCOME > %s" % (1000)
    
    try:
       cursor.execute(sql)
       results = cursor.fetchall()
       for row in results:
          fname = row[0]
          lname = row[1]
          age = row[2]
          sex = row[3]
          income = row[4]
          print ("fname=%s,lname=%s,age=%s,sex=%s,income=%s" % (fname, lname, age, sex, income ))
    except:
       print ("Error: unable to fetch data")
    
    db.close()
    

    import pymysql.cursors
    
    # Connect to the database
    connection = pymysql.connect(host='localhost',
                                 user='user',
                                 password='passwd',
                                 db='db',
                                 charset='utf8mb4',
                                 cursorclass=pymysql.cursors.DictCursor)
    
    try:
        with connection.cursor() as cursor:
            # Create a new record
            sql = "INSERT INTO `users` (`email`, `password`) VALUES (%s, %s)"
            cursor.execute(sql, ('webmaster@python.org', 'very-secret'))
    
        # connection is not autocommit by default. So you must commit to save
        # your changes.
        connection.commit()
    
        with connection.cursor() as cursor:
            # Read a single record
            sql = "SELECT `id`, `password` FROM `users` WHERE `email`=%s"
            cursor.execute(sql, ('webmaster@python.org',))
            result = cursor.fetchone()
            print(result)
    finally:
        connection.close()
    

    .

    注意事项

    1. 在sql中如果出现了 % 符号作为sql的一部分, 但是在execute时又需要带入参数, 这时候会出现 ValueError: unsupported format character 错误. 因为pymysql会错误的认为这个%符号是未正确拼写的格式化字符串的一部分. 这时候需要将 % 转义, 写为 %%. 例如

      CASE CAST(SUBSTRING(u.identity_number, 17, 1) AS SIGNED) %% 2
        WHEN 0 THEN '女'
        ELSE '男'
      END `gender`,
    
  • 相关阅读:
    微分方程、动力系统与混沌导论 第1章 一阶方程[书摘]
    微分方程解耦
    指数输入时微分方程特解的求法
    例说信号与系统
    SVD分解的理解[转载]
    3D数学 ---- 矩阵和线性变换[转载]
    千里积于跬步——流,向量场,和微分方程[转载]
    微分方程——包络和奇解
    微分方程——基本概念和常微分方程的发展史
    sencha touch 入门学习资料大全
  • 原文地址:https://www.cnblogs.com/milton/p/10170758.html
Copyright © 2011-2022 走看看