How do I connect to a MySQL Database in Python?

后端 未结 25 1554
眼角桃花
眼角桃花 2020-11-21 07:43

How do I connect to a MySQL database using a python program?

相关标签:
25条回答
  • 2020-11-21 08:07

    Despite all answers above, in case you do not want to connect to a specific database upfront, for example, if you want to create the database still (!), you can use connection.select_db(database), as demonstrated in the following.

    import pymysql.cursors
    connection = pymysql.connect(host='localhost',
                             user='mahdi',
                             password='mahdi',
                             charset='utf8mb4',
                             cursorclass=pymysql.cursors.DictCursor)
    cursor = connection.cursor()
    cursor.execute("CREATE DATABASE IF NOT EXISTS "+database)
    connection.select_db(database)
    sql_create = "CREATE TABLE IF NOT EXISTS "+tablename+(timestamp DATETIME NOT NULL PRIMARY KEY)"
    cursor.execute(sql_create)
    connection.commit()
    cursor.close()
    
    0 讨论(0)
  • 2020-11-21 08:07

    mysqlclient is the best as others only provide support to specific versions of python

     pip install mysqlclient
    

    example code

        import mysql.connector
        import _mysql
        db=_mysql.connect("127.0.0.1","root","umer","sys")
        #db=_mysql.connect(host,user,password,db)
        # Example of how to insert new values:
        db.query("""INSERT INTO table1 VALUES ('01', 'myname')""")
        db.store_result()
        db.query("SELECT * FROM new1.table1 ;") 
        #new1 is scheme table1 is table mysql 
        res= db.store_result()
        for i in range(res.num_rows()):
            print(result.fetch_row())
    

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

    0 讨论(0)
  • 2020-11-21 08:10

    First, install python-mysql connector from https://dev.mysql.com/downloads/connector/python/

    on Python console enter:

    pip install mysql-connector-python-rf
    import mysql.connector
    
    0 讨论(0)
  • 2020-11-21 08:11

    Stop Using MySQLDb if you want to avoid installing mysql headers just to access mysql from python.

    Use pymysql. It does all of what MySQLDb does, but it was implemented purely in Python with NO External Dependencies. This makes the installation process on all operating systems consistent and easy. pymysql is a drop in replacement for MySQLDb and IMHO there is no reason to ever use MySQLDb for anything... EVER! - PTSD from installing MySQLDb on Mac OSX and *Nix systems, but that's just me.

    Installation

    pip install pymysql

    That's it... you are ready to play.

    Example usage from pymysql Github repo

    import pymysql.cursors
    import pymysql
    
    # 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()
    

    ALSO - Replace MySQLdb in existing code quickly and transparently

    If you have existing code that uses MySQLdb, you can easily replace it with pymysql using this simple process:

    # import MySQLdb << Remove this line and replace with:
    import pymysql
    pymysql.install_as_MySQLdb()
    

    All subsequent references to MySQLdb will use pymysql transparently.

    0 讨论(0)
  • 2020-11-21 08:12

    Best way to connect to MySQL from python is to Use MySQL Connector/Python because it is official Oracle driver for MySQL for working with Python and it works with both Python 3 and Python 2.

    follow the steps mentioned below to connect MySQL

    1. install connector using pip

      pip install mysql-connector-python

    or you can download the installer from https://dev.mysql.com/downloads/connector/python/

    1. Use connect() method of mysql connector python to connect to MySQL.pass the required argument to connect() method. i.e. Host, username, password, and database name.

    2. Create cursor object from connection object returned by connect()method to execute SQL queries.

    3. close the connection after your work completes.

    Example:

    import mysql.connector
     from mysql.connector import Error
     try:
         conn = mysql.connector.connect(host='hostname',
                             database='db',
                             user='root',
                             password='passcode')
         if conn.is_connected():
           cursor = conn.cursor()
           cursor.execute("select database();")
           record = cursor.fetchall()
           print ("You're connected to - ", record)
     except Error as e :
        print ("Print your error msg", e)
     finally:
        #closing database connection.
        if(conn.is_connected()):
           cursor.close()
           conn.close()
    

    Reference - https://pynative.com/python-mysql-database-connection/

    Important API of MySQL Connector Python

    • For DML operations - Use cursor.execute() and cursor.executemany() to run query. and after this use connection.commit() to persist your changes to DB

    • To fetch data - Use cursor.execute() to run query and cursor.fetchall(), cursor.fetchone(), cursor.fetchmany(SIZE) to fetch data

    0 讨论(0)
  • 2020-11-21 08:15

    Connecting to MYSQL with Python 2 in three steps

    1 - Setting

    You must install a MySQL driver before doing anything. Unlike PHP, Only the SQLite driver is installed by default with Python. The most used package to do so is MySQLdb but it's hard to install it using easy_install. Please note MySQLdb only supports Python 2.

    For Windows user, you can get an exe of MySQLdb.

    For Linux, this is a casual package (python-mysqldb). (You can use sudo apt-get install python-mysqldb (for debian based distros), yum install MySQL-python (for rpm-based), or dnf install python-mysql (for modern fedora distro) in command line to download.)

    For Mac, you can install MySQLdb using Macport.

    2 - Usage

    After installing, Reboot. This is not mandatory, But it will prevent me from answering 3 or 4 other questions in this post if something goes wrong. So please reboot.

    Then it is just like using any other package :

    #!/usr/bin/python
    import MySQLdb
    
    db = MySQLdb.connect(host="localhost",    # your host, usually localhost
                         user="john",         # your username
                         passwd="megajonhy",  # your password
                         db="jonhydb")        # name of the data base
    
    # you must create a Cursor object. It will let
    #  you execute all the queries you need
    cur = db.cursor()
    
    # Use all the SQL you like
    cur.execute("SELECT * FROM YOUR_TABLE_NAME")
    
    # print all the first cell of all the rows
    for row in cur.fetchall():
        print row[0]
    
    db.close()
    

    Of course, there are thousand of possibilities and options; this is a very basic example. You will have to look at the documentation. A good starting point.

    3 - More advanced usage

    Once you know how it works, You may want to use an ORM to avoid writing SQL manually and manipulate your tables as they were Python objects. The most famous ORM in the Python community is SQLAlchemy.

    I strongly advise you to use it: your life is going to be much easier.

    I recently discovered another jewel in the Python world: peewee. It's a very lite ORM, really easy and fast to setup then use. It makes my day for small projects or stand alone apps, Where using big tools like SQLAlchemy or Django is overkill :

    import peewee
    from peewee import *
    
    db = MySQLDatabase('jonhydb', user='john', passwd='megajonhy')
    
    class Book(peewee.Model):
        author = peewee.CharField()
        title = peewee.TextField()
    
        class Meta:
            database = db
    
    Book.create_table()
    book = Book(author="me", title='Peewee is cool')
    book.save()
    for book in Book.filter(author="me"):
        print book.title
    

    This example works out of the box. Nothing other than having peewee (pip install peewee) is required.

    0 讨论(0)
提交回复
热议问题