SlideShare uma empresa Scribd logo
1 de 50
Baixar para ler offline
1

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Developing with
MySQL Connector/Python
Dr. Paulo Jesus
Software Developer

2

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Program Agenda
 Introduction of Connector/Python
 Download and Installation
 Coding
 About Performance
 Frameworks and Applications

3

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Introduction

4

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Introducing MySQL Connector/Python

 MySQL Database Driver
 Pure Python, no 3rd party dependencies

 Python v2 and v3
 For MySQL, by MySQL
 Documentation
– http://dev.mysql.com/doc/connector-python/en/index.html

5

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Pure Python

 Written entirely using Python
 No compiling against MySQL client libraries

 Only Standard Library used
 Developed for Python v2 and v3
 PEP-249 compliant

6

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Current Connector/Python Versions

 v1.0
– GA since September 2012

– v1.0.12 released August 2013

 v1.1
– Alpha since June 2013

– Some new features:
 Prepared Statements and Pooling
 Django backend included

7

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Python Support
Overview of supported Python version
2.4

2.5

2.6

2.7

3.0

3.1

3.2

3.3

v1.0

?

?













v1.1

















Connector/Python

8

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
MySQL Server Support

 MySQL v5.5 and higher
 Known to work on earlier versions
– No old password hashing support
– MySQL v4.0 and older will not work

9

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Download & Installation

10

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Dependencies
Python!
 For Windows
– Install Python from http://python.org

 Other systems
– should have Python (2.6 or greater)

11

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Download

 MySQL Website
– http://dev.mysql.com/downloads/connector/python

 Available as
– TAR/ZIP archive
– RPM and Debian package

– Windows Installer (MSI)

 Launchpad
– https://launchpad.net/myconnpy

12

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Download

 Example file names:
– mysql-connector-python-1.1.1.zip

– mysql-connector-python-1.1.1-py2.7.msi
– mysql-connector-python-1.1.1.el6.noarch.rpm

 Architecture independent

13

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Installation: Using TAR/ZIP
Running setup.py
 Most common way
 Works anywhere
– .. where Python is installed

 For both Python v2 & v3

14

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Installation: Universal
Using setup.py
shell> unzip mysql-connector-1.0.12.zip
shell> cd mysql-connector-1.0.12
shell> python setup.py install
# Or any other Python binary
shell> /opt/python/3.3/bin/python3 setup.py install

15

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Installation using RPM and Debian package

# On Oracle Linux
shell> rpm -i mysql-connector-python-1.1.1.el6.noarch.rpm
# On Ubuntu
shell> dpkg -i 
mysql-connector-python_1.0.12-1ubuntu12.04_all.deb

16

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Installation: using PyPI
Python Package Index
shell> easy_install mysql-connector-python

or
shell> pip install mysql-connector-python

17

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Install Inside Virtual Environment
Useful for testing and new development
# If not installed yet
shell> pip install virtualenv
shell> virtualenv ENV
shell> source ENV/bin/activate
shell> pip install mysql-connector-python

18

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Coding

19

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Classes and Objects
mysql.connector module
 import mysql.connector
 mysql.connector.connect()
– accepts numerous arguments
– returns a MySQLConnection

20

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Classes and Objects
MySQLConnection
 MySQLConnection
– connects with MySQL

– retrieve server information
– reconfigure and reconnect
– commit/rollback transactions

– create MySQLCursor objects

21

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Classes and Objects
MySQLCursor
 MySQLCursor
– fetch & manipulate data

– transactions
– different flavors (buffered, raw)

22

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Connecting with MySQL
Basic connection
import mysql.connector
cnx = mysql.connector.connect(user='root',
host='prod.example.com')
print(cnx.connection_id)
cnx.close()

23

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Connecting with MySQL
Use a dict to hold configuration & use IPv6
CONFIG = {
'user': 'root',
'host': '::1',
}
cnx = mysql.connector.connect(**CONFIG)
print(cnx.connection_id)
cnx.close()
24

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Reconnecting with MySQL
Reconfigure and reconnect
cnx = mysql.connector.connect(**CONFIG)

cnx.config(user='joe', password='mysecret')
cnx.reconnect()
cnx.close()

25

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Cursor methods
MySQLCursor class
 execute(query, data)
– data is list of values

 fetchone()
– returns row as tuple

 fetchmany(20)
– Get the next 20 rows (or less) as list of tuples

 fetchall()
– Get all, or remaining, as list of tuples

26

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Fetching Data
Fetch a row
cur = cnx.cursor()
cur.execute("SELECT NOW()")
result= cur.fetchone()[0]
print(result)
cur.close()
# Result
(datetime.datetime(2013, 9, 2, 10, 41, 58))
27

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Fetching Data
Going through results using iterator
query = (
"SELECT id, last_name FROM employees "
"WHERE id > %s AND first_name LIKE %s"
)
cur.execute(query, (500, 'J%'))
for row in cur:
print("{id} {name}".format(id=row[0], name=row[1]))
28

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Manipulating data
Inserting, updating and deleting
insert_stmt = (
"INSERT INTO employees (first_name, last_name) "
"VALUES (%s, %s)
)
cur = cnx.cursor()
cur.execute(insert_stmt, ('John', 'Doe'))
print("ID of new employee: {id}".format(id=cur.lastrowid))
cnx.commit()
29

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Change Many Records
MySQLCursor.executemany()
data = [
('John', 'Doe'),
('Jane', 'Doe'),
]
cur.executemany(insert_stmt, data)
cnx.commit()

30

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Execute Multiple Statements

 Separated by semicolon ;
 Could return one or more results

 Example:
– "SELECT NOW(); SELECT CURRENT_USER()"

 Needs multi argument set to True
– Raises error if not
– cur.execute(query, multi=True)

31

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Executing Multiple Statements
Example
cur = cnx.cursor()
queries = "SELECT NOW(); SELECT CURRENT_USER()"
for mcur in cur.execute(query, multi=True):
if mcur.with_rows:
print(mcur.fetchall())

32

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Retrying a Transaction (1/2)
Using reconnect()
tries = 10
while tries:
tries -= 1
try:
if not cnx.is_connected():
cnx.reconnect()
cur = cnx.cursor()
cur.execute(insert, ('Joe',))
33

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Retrying a Transaction (2/2)
Using reconnect()
cur.execute(insert, ('Joe',))
except mysql.connector.Error as err:
if not tries:
raise
else:
cnx.commit()
break

34

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Some Performance Tips

35

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Push Work to Server
General tips
 Use MySQL functions
– Date/Time calculation,

– String operations, etc..

 Sorting using ORDER BY in queries
 Select what you need
– Don't SELECT *

36

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Push Work to Server: Example
Date calculation done by MySQL server
query =
"SELECT DATEDIFF( end, start) FROM events WHERE id = %s"
cur.execute(query, (1234,))
event_length = cur.fetchone()[0]

37

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Raw Data

 Use a raw cursor
– cnx.cursor(raw=True)

 No MySQL to Python conversion
– data are all strings

 It is faster in most cases
– dumping to CSV or create XML
– handle conversion elsewhere

38

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Bulk Load Using CSV

 Use LOAD DATA LOCAL INFILE
 Server configuration has to allow it
– local_infile=1

 Client flag has to be set

39

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Using LOAD DATA LOCAL INFILE

CONFIG = {
'user': 'root', 'host': 'fk.example.com',
'client_flags': [mysql.connector.ClientFlag.LOCAL_FILES]
}
sql = "LOAD DATA LOCAL INFILE %s INTO TABLE employees"
cur.execute(sql, ('employees.csv',))

40

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Frameworks and
Applications

41

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
MySQL Projects
Depending on Connector/Python
 MySQL Utilities
– Command line utilities

– Managing, dumping data, failover, ..

 MySQL Fabric
– Data distribution

– High-availability for groups of MySQL servers
 Both pure Python & no 3rd party modules

42

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
SQLAlchemy

 SQL Toolkit and ORM (Object Relational Mapper)
 Pythonic database access

 Used by lots of other (web) frameworks
 Connector/Python dialect included
– Since SQLAlchemy 0.6

43

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
SQLAlchemy: Usage
Connect String
from sqlalchemy import create_engine
DB_URI =
"mysql+mysqlconnector://{user}:{pwd}@{host}:{port}/{db}"
engine = create_engine(DB_URI.format(
user='joe', pwd='mysecret', db='employees',
host='127.0.0.1', port=3306)
)
44

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Django

 Web framework
 ORM and database API

 No support for Connector/Python
 But Connector/Python 1.1.1 supports Django
– Support features as microsecond precision
– Works with Django 1.4 and 1.5
– Python 3 support

45

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Django: Configuration
Using Connector/Python backend
# settings.py
DATABASES = {
'default': {
'ENGINE': 'mysql.connector.django',
}
}

46

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Q&A

47

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Q&A
More Information
 Documentation & Examples
– http://dev.mysql.com/doc/connector-python/en/index.html

 Download
– http://dev.mysql.com/downloads/connector/python/#downloads

 Blog
– http://geert.vanderkelen.org

 Feedback & Forum
– http://forums.mysql.com/list.php?50
– http://bugs.mysql.com/

48

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Graphic Section Divider

49

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
50

Copyright © 2013, Oracle and/or its affiliates. All rights reserved.

Mais conteúdo relacionado

Mais procurados

Inexpensive Datamasking for MySQL with ProxySQL - data anonymization for deve...
Inexpensive Datamasking for MySQL with ProxySQL - data anonymization for deve...Inexpensive Datamasking for MySQL with ProxySQL - data anonymization for deve...
Inexpensive Datamasking for MySQL with ProxySQL - data anonymization for deve...Frederic Descamps
 
MySQL Tech Café #8: MySQL 8.0 for Python Developers
MySQL Tech Café #8: MySQL 8.0 for Python DevelopersMySQL Tech Café #8: MySQL 8.0 for Python Developers
MySQL Tech Café #8: MySQL 8.0 for Python DevelopersFrederic Descamps
 
the State of the Dolphin - October 2020
the State of the Dolphin - October 2020the State of the Dolphin - October 2020
the State of the Dolphin - October 2020Frederic Descamps
 
101 2.4b use debian package management v2
101 2.4b use debian package management v2101 2.4b use debian package management v2
101 2.4b use debian package management v2Acácio Oliveira
 
101 2.4 use debian package management
101 2.4 use debian package management101 2.4 use debian package management
101 2.4 use debian package managementAcácio Oliveira
 
2.4.1 use debian package management v2
2.4.1 use debian package management v22.4.1 use debian package management v2
2.4.1 use debian package management v2Acácio Oliveira
 
Tools, not only for Oracle RAC
Tools, not only for Oracle RACTools, not only for Oracle RAC
Tools, not only for Oracle RACMarkus Flechtner
 
MySQL Document Store - How to replace a NoSQL database by MySQL without effor...
MySQL Document Store - How to replace a NoSQL database by MySQL without effor...MySQL Document Store - How to replace a NoSQL database by MySQL without effor...
MySQL Document Store - How to replace a NoSQL database by MySQL without effor...Frederic Descamps
 
0396 oracle-goldengate-12c-tutorial
0396 oracle-goldengate-12c-tutorial0396 oracle-goldengate-12c-tutorial
0396 oracle-goldengate-12c-tutorialKlausePaulino
 
RAC-Installing your First Cluster and Database
RAC-Installing your First Cluster and DatabaseRAC-Installing your First Cluster and Database
RAC-Installing your First Cluster and DatabaseNikhil Kumar
 
Setup oracle golden gate 11g replication
Setup oracle golden gate 11g replicationSetup oracle golden gate 11g replication
Setup oracle golden gate 11g replicationKanwar Batra
 
MySQL Database Service Webinar: Upgrading from on-premise MySQL to MDS
MySQL Database Service Webinar: Upgrading from on-premise MySQL to MDSMySQL Database Service Webinar: Upgrading from on-premise MySQL to MDS
MySQL Database Service Webinar: Upgrading from on-premise MySQL to MDSFrederic Descamps
 
MySQL InnoDB Cluster and Group Replication in a nutshell hands-on tutorial
MySQL InnoDB Cluster and Group Replication in a nutshell  hands-on tutorialMySQL InnoDB Cluster and Group Replication in a nutshell  hands-on tutorial
MySQL InnoDB Cluster and Group Replication in a nutshell hands-on tutorialFrederic Descamps
 
Oracle Globalization Support, NLS_LENGTH_SEMANTICS, Unicode
Oracle Globalization Support, NLS_LENGTH_SEMANTICS, UnicodeOracle Globalization Support, NLS_LENGTH_SEMANTICS, Unicode
Oracle Globalization Support, NLS_LENGTH_SEMANTICS, UnicodeMarkus Flechtner
 

Mais procurados (20)

Inexpensive Datamasking for MySQL with ProxySQL - data anonymization for deve...
Inexpensive Datamasking for MySQL with ProxySQL - data anonymization for deve...Inexpensive Datamasking for MySQL with ProxySQL - data anonymization for deve...
Inexpensive Datamasking for MySQL with ProxySQL - data anonymization for deve...
 
Oracle Golden Gate
Oracle Golden GateOracle Golden Gate
Oracle Golden Gate
 
MySQL Tech Café #8: MySQL 8.0 for Python Developers
MySQL Tech Café #8: MySQL 8.0 for Python DevelopersMySQL Tech Café #8: MySQL 8.0 for Python Developers
MySQL Tech Café #8: MySQL 8.0 for Python Developers
 
MySQL Router REST API
MySQL Router REST APIMySQL Router REST API
MySQL Router REST API
 
the State of the Dolphin - October 2020
the State of the Dolphin - October 2020the State of the Dolphin - October 2020
the State of the Dolphin - October 2020
 
MySQL Shell for DBAs
MySQL Shell for DBAsMySQL Shell for DBAs
MySQL Shell for DBAs
 
101 2.4b use debian package management v2
101 2.4b use debian package management v2101 2.4b use debian package management v2
101 2.4b use debian package management v2
 
101 2.4 use debian package management
101 2.4 use debian package management101 2.4 use debian package management
101 2.4 use debian package management
 
2.4.1 use debian package management v2
2.4.1 use debian package management v22.4.1 use debian package management v2
2.4.1 use debian package management v2
 
Tools, not only for Oracle RAC
Tools, not only for Oracle RACTools, not only for Oracle RAC
Tools, not only for Oracle RAC
 
Rac nonrac clone
Rac nonrac cloneRac nonrac clone
Rac nonrac clone
 
MySQL Document Store - How to replace a NoSQL database by MySQL without effor...
MySQL Document Store - How to replace a NoSQL database by MySQL without effor...MySQL Document Store - How to replace a NoSQL database by MySQL without effor...
MySQL Document Store - How to replace a NoSQL database by MySQL without effor...
 
0396 oracle-goldengate-12c-tutorial
0396 oracle-goldengate-12c-tutorial0396 oracle-goldengate-12c-tutorial
0396 oracle-goldengate-12c-tutorial
 
RAC-Installing your First Cluster and Database
RAC-Installing your First Cluster and DatabaseRAC-Installing your First Cluster and Database
RAC-Installing your First Cluster and Database
 
Rac 12c optimization
Rac 12c optimizationRac 12c optimization
Rac 12c optimization
 
Setup oracle golden gate 11g replication
Setup oracle golden gate 11g replicationSetup oracle golden gate 11g replication
Setup oracle golden gate 11g replication
 
361 Rac
361 Rac361 Rac
361 Rac
 
MySQL Database Service Webinar: Upgrading from on-premise MySQL to MDS
MySQL Database Service Webinar: Upgrading from on-premise MySQL to MDSMySQL Database Service Webinar: Upgrading from on-premise MySQL to MDS
MySQL Database Service Webinar: Upgrading from on-premise MySQL to MDS
 
MySQL InnoDB Cluster and Group Replication in a nutshell hands-on tutorial
MySQL InnoDB Cluster and Group Replication in a nutshell  hands-on tutorialMySQL InnoDB Cluster and Group Replication in a nutshell  hands-on tutorial
MySQL InnoDB Cluster and Group Replication in a nutshell hands-on tutorial
 
Oracle Globalization Support, NLS_LENGTH_SEMANTICS, Unicode
Oracle Globalization Support, NLS_LENGTH_SEMANTICS, UnicodeOracle Globalization Support, NLS_LENGTH_SEMANTICS, Unicode
Oracle Globalization Support, NLS_LENGTH_SEMANTICS, Unicode
 

Semelhante a Con4445 jesus

Performance schema and_ps_helper
Performance schema and_ps_helperPerformance schema and_ps_helper
Performance schema and_ps_helperMark Leith
 
Enterprise manager 13c -let's connect to the Oracle Cloud
Enterprise manager 13c -let's connect to the Oracle CloudEnterprise manager 13c -let's connect to the Oracle Cloud
Enterprise manager 13c -let's connect to the Oracle CloudTrivadis
 
Developing for Node.JS with MySQL and NoSQL
Developing for Node.JS with MySQL and NoSQLDeveloping for Node.JS with MySQL and NoSQL
Developing for Node.JS with MySQL and NoSQLJohn David Duncan
 
Develop Python Applications with MySQL Connector/Python
Develop Python Applications with MySQL Connector/PythonDevelop Python Applications with MySQL Connector/Python
Develop Python Applications with MySQL Connector/PythonJesper Wisborg Krogh
 
MySQL Proxy. A powerful, flexible MySQL toolbox.
MySQL Proxy. A powerful, flexible MySQL toolbox.MySQL Proxy. A powerful, flexible MySQL toolbox.
MySQL Proxy. A powerful, flexible MySQL toolbox.Miguel Araújo
 
20161029 py con-mysq-lv3
20161029 py con-mysq-lv320161029 py con-mysq-lv3
20161029 py con-mysq-lv3Ivan Ma
 
MySQL Administration and Monitoring
MySQL Administration and MonitoringMySQL Administration and Monitoring
MySQL Administration and MonitoringMark Leith
 
Java API for WebSocket 1.0: Java EE 7 and GlassFish
Java API for WebSocket 1.0: Java EE 7 and GlassFishJava API for WebSocket 1.0: Java EE 7 and GlassFish
Java API for WebSocket 1.0: Java EE 7 and GlassFishArun Gupta
 
The State of the Dolphin, MySQL Keynote at Percona Live Europe 2019, Amsterda...
The State of the Dolphin, MySQL Keynote at Percona Live Europe 2019, Amsterda...The State of the Dolphin, MySQL Keynote at Percona Live Europe 2019, Amsterda...
The State of the Dolphin, MySQL Keynote at Percona Live Europe 2019, Amsterda...Geir Høydalsvik
 
Instrumenting plugins for Performance Schema
Instrumenting plugins for Performance SchemaInstrumenting plugins for Performance Schema
Instrumenting plugins for Performance SchemaMark Leith
 
Oracle OpenWorld 2013 - HOL9737 MySQL Replication Best Practices
Oracle OpenWorld 2013 - HOL9737 MySQL Replication Best PracticesOracle OpenWorld 2013 - HOL9737 MySQL Replication Best Practices
Oracle OpenWorld 2013 - HOL9737 MySQL Replication Best PracticesSven Sandberg
 
CloudStack Meetup Santa Clara
CloudStack Meetup Santa Clara CloudStack Meetup Santa Clara
CloudStack Meetup Santa Clara NetApp
 
Oracle Solaris 11.1 New Features
Oracle Solaris 11.1 New FeaturesOracle Solaris 11.1 New Features
Oracle Solaris 11.1 New FeaturesOrgad Kimchi
 
Python and the MySQL Document Store
Python and the MySQL Document StorePython and the MySQL Document Store
Python and the MySQL Document StoreJesper Wisborg Krogh
 
20201106 hk-py con-mysql-shell
20201106 hk-py con-mysql-shell20201106 hk-py con-mysql-shell
20201106 hk-py con-mysql-shellIvan Ma
 

Semelhante a Con4445 jesus (20)

MySQL JSON Functions
MySQL JSON FunctionsMySQL JSON Functions
MySQL JSON Functions
 
Performance schema and_ps_helper
Performance schema and_ps_helperPerformance schema and_ps_helper
Performance schema and_ps_helper
 
Enterprise manager 13c -let's connect to the Oracle Cloud
Enterprise manager 13c -let's connect to the Oracle CloudEnterprise manager 13c -let's connect to the Oracle Cloud
Enterprise manager 13c -let's connect to the Oracle Cloud
 
Developing for Node.JS with MySQL and NoSQL
Developing for Node.JS with MySQL and NoSQLDeveloping for Node.JS with MySQL and NoSQL
Developing for Node.JS with MySQL and NoSQL
 
Develop Python Applications with MySQL Connector/Python
Develop Python Applications with MySQL Connector/PythonDevelop Python Applications with MySQL Connector/Python
Develop Python Applications with MySQL Connector/Python
 
MySQL Proxy. A powerful, flexible MySQL toolbox.
MySQL Proxy. A powerful, flexible MySQL toolbox.MySQL Proxy. A powerful, flexible MySQL toolbox.
MySQL Proxy. A powerful, flexible MySQL toolbox.
 
Stackato Presentation Techzone 2013
Stackato Presentation Techzone 2013Stackato Presentation Techzone 2013
Stackato Presentation Techzone 2013
 
Pixels_Camp
Pixels_CampPixels_Camp
Pixels_Camp
 
20161029 py con-mysq-lv3
20161029 py con-mysq-lv320161029 py con-mysq-lv3
20161029 py con-mysq-lv3
 
MySQL Administration and Monitoring
MySQL Administration and MonitoringMySQL Administration and Monitoring
MySQL Administration and Monitoring
 
Java API for WebSocket 1.0: Java EE 7 and GlassFish
Java API for WebSocket 1.0: Java EE 7 and GlassFishJava API for WebSocket 1.0: Java EE 7 and GlassFish
Java API for WebSocket 1.0: Java EE 7 and GlassFish
 
The State of the Dolphin, MySQL Keynote at Percona Live Europe 2019, Amsterda...
The State of the Dolphin, MySQL Keynote at Percona Live Europe 2019, Amsterda...The State of the Dolphin, MySQL Keynote at Percona Live Europe 2019, Amsterda...
The State of the Dolphin, MySQL Keynote at Percona Live Europe 2019, Amsterda...
 
MySQL Quick Dive
MySQL Quick DiveMySQL Quick Dive
MySQL Quick Dive
 
Instrumenting plugins for Performance Schema
Instrumenting plugins for Performance SchemaInstrumenting plugins for Performance Schema
Instrumenting plugins for Performance Schema
 
Oracle OpenWorld 2013 - HOL9737 MySQL Replication Best Practices
Oracle OpenWorld 2013 - HOL9737 MySQL Replication Best PracticesOracle OpenWorld 2013 - HOL9737 MySQL Replication Best Practices
Oracle OpenWorld 2013 - HOL9737 MySQL Replication Best Practices
 
CloudStack Meetup Santa Clara
CloudStack Meetup Santa Clara CloudStack Meetup Santa Clara
CloudStack Meetup Santa Clara
 
Marcin Szałowicz - MySQL Workbench
Marcin Szałowicz - MySQL WorkbenchMarcin Szałowicz - MySQL Workbench
Marcin Szałowicz - MySQL Workbench
 
Oracle Solaris 11.1 New Features
Oracle Solaris 11.1 New FeaturesOracle Solaris 11.1 New Features
Oracle Solaris 11.1 New Features
 
Python and the MySQL Document Store
Python and the MySQL Document StorePython and the MySQL Document Store
Python and the MySQL Document Store
 
20201106 hk-py con-mysql-shell
20201106 hk-py con-mysql-shell20201106 hk-py con-mysql-shell
20201106 hk-py con-mysql-shell
 

Último

A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsRoshan Dwivedi
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilV3cube
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 

Último (20)

A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 

Con4445 jesus

  • 1. 1 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 2. Developing with MySQL Connector/Python Dr. Paulo Jesus Software Developer 2 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 3. Program Agenda  Introduction of Connector/Python  Download and Installation  Coding  About Performance  Frameworks and Applications 3 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 4. Introduction 4 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 5. Introducing MySQL Connector/Python  MySQL Database Driver  Pure Python, no 3rd party dependencies  Python v2 and v3  For MySQL, by MySQL  Documentation – http://dev.mysql.com/doc/connector-python/en/index.html 5 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 6. Pure Python  Written entirely using Python  No compiling against MySQL client libraries  Only Standard Library used  Developed for Python v2 and v3  PEP-249 compliant 6 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 7. Current Connector/Python Versions  v1.0 – GA since September 2012 – v1.0.12 released August 2013  v1.1 – Alpha since June 2013 – Some new features:  Prepared Statements and Pooling  Django backend included 7 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 8. Python Support Overview of supported Python version 2.4 2.5 2.6 2.7 3.0 3.1 3.2 3.3 v1.0 ? ?       v1.1         Connector/Python 8 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 9. MySQL Server Support  MySQL v5.5 and higher  Known to work on earlier versions – No old password hashing support – MySQL v4.0 and older will not work 9 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 10. Download & Installation 10 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 11. Dependencies Python!  For Windows – Install Python from http://python.org  Other systems – should have Python (2.6 or greater) 11 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 12. Download  MySQL Website – http://dev.mysql.com/downloads/connector/python  Available as – TAR/ZIP archive – RPM and Debian package – Windows Installer (MSI)  Launchpad – https://launchpad.net/myconnpy 12 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 13. Download  Example file names: – mysql-connector-python-1.1.1.zip – mysql-connector-python-1.1.1-py2.7.msi – mysql-connector-python-1.1.1.el6.noarch.rpm  Architecture independent 13 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 14. Installation: Using TAR/ZIP Running setup.py  Most common way  Works anywhere – .. where Python is installed  For both Python v2 & v3 14 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 15. Installation: Universal Using setup.py shell> unzip mysql-connector-1.0.12.zip shell> cd mysql-connector-1.0.12 shell> python setup.py install # Or any other Python binary shell> /opt/python/3.3/bin/python3 setup.py install 15 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 16. Installation using RPM and Debian package # On Oracle Linux shell> rpm -i mysql-connector-python-1.1.1.el6.noarch.rpm # On Ubuntu shell> dpkg -i mysql-connector-python_1.0.12-1ubuntu12.04_all.deb 16 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 17. Installation: using PyPI Python Package Index shell> easy_install mysql-connector-python or shell> pip install mysql-connector-python 17 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 18. Install Inside Virtual Environment Useful for testing and new development # If not installed yet shell> pip install virtualenv shell> virtualenv ENV shell> source ENV/bin/activate shell> pip install mysql-connector-python 18 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 19. Coding 19 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 20. Classes and Objects mysql.connector module  import mysql.connector  mysql.connector.connect() – accepts numerous arguments – returns a MySQLConnection 20 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 21. Classes and Objects MySQLConnection  MySQLConnection – connects with MySQL – retrieve server information – reconfigure and reconnect – commit/rollback transactions – create MySQLCursor objects 21 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 22. Classes and Objects MySQLCursor  MySQLCursor – fetch & manipulate data – transactions – different flavors (buffered, raw) 22 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 23. Connecting with MySQL Basic connection import mysql.connector cnx = mysql.connector.connect(user='root', host='prod.example.com') print(cnx.connection_id) cnx.close() 23 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 24. Connecting with MySQL Use a dict to hold configuration & use IPv6 CONFIG = { 'user': 'root', 'host': '::1', } cnx = mysql.connector.connect(**CONFIG) print(cnx.connection_id) cnx.close() 24 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 25. Reconnecting with MySQL Reconfigure and reconnect cnx = mysql.connector.connect(**CONFIG) cnx.config(user='joe', password='mysecret') cnx.reconnect() cnx.close() 25 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 26. Cursor methods MySQLCursor class  execute(query, data) – data is list of values  fetchone() – returns row as tuple  fetchmany(20) – Get the next 20 rows (or less) as list of tuples  fetchall() – Get all, or remaining, as list of tuples 26 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 27. Fetching Data Fetch a row cur = cnx.cursor() cur.execute("SELECT NOW()") result= cur.fetchone()[0] print(result) cur.close() # Result (datetime.datetime(2013, 9, 2, 10, 41, 58)) 27 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 28. Fetching Data Going through results using iterator query = ( "SELECT id, last_name FROM employees " "WHERE id > %s AND first_name LIKE %s" ) cur.execute(query, (500, 'J%')) for row in cur: print("{id} {name}".format(id=row[0], name=row[1])) 28 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 29. Manipulating data Inserting, updating and deleting insert_stmt = ( "INSERT INTO employees (first_name, last_name) " "VALUES (%s, %s) ) cur = cnx.cursor() cur.execute(insert_stmt, ('John', 'Doe')) print("ID of new employee: {id}".format(id=cur.lastrowid)) cnx.commit() 29 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 30. Change Many Records MySQLCursor.executemany() data = [ ('John', 'Doe'), ('Jane', 'Doe'), ] cur.executemany(insert_stmt, data) cnx.commit() 30 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 31. Execute Multiple Statements  Separated by semicolon ;  Could return one or more results  Example: – "SELECT NOW(); SELECT CURRENT_USER()"  Needs multi argument set to True – Raises error if not – cur.execute(query, multi=True) 31 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 32. Executing Multiple Statements Example cur = cnx.cursor() queries = "SELECT NOW(); SELECT CURRENT_USER()" for mcur in cur.execute(query, multi=True): if mcur.with_rows: print(mcur.fetchall()) 32 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 33. Retrying a Transaction (1/2) Using reconnect() tries = 10 while tries: tries -= 1 try: if not cnx.is_connected(): cnx.reconnect() cur = cnx.cursor() cur.execute(insert, ('Joe',)) 33 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 34. Retrying a Transaction (2/2) Using reconnect() cur.execute(insert, ('Joe',)) except mysql.connector.Error as err: if not tries: raise else: cnx.commit() break 34 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 35. Some Performance Tips 35 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 36. Push Work to Server General tips  Use MySQL functions – Date/Time calculation, – String operations, etc..  Sorting using ORDER BY in queries  Select what you need – Don't SELECT * 36 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 37. Push Work to Server: Example Date calculation done by MySQL server query = "SELECT DATEDIFF( end, start) FROM events WHERE id = %s" cur.execute(query, (1234,)) event_length = cur.fetchone()[0] 37 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 38. Raw Data  Use a raw cursor – cnx.cursor(raw=True)  No MySQL to Python conversion – data are all strings  It is faster in most cases – dumping to CSV or create XML – handle conversion elsewhere 38 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 39. Bulk Load Using CSV  Use LOAD DATA LOCAL INFILE  Server configuration has to allow it – local_infile=1  Client flag has to be set 39 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 40. Using LOAD DATA LOCAL INFILE CONFIG = { 'user': 'root', 'host': 'fk.example.com', 'client_flags': [mysql.connector.ClientFlag.LOCAL_FILES] } sql = "LOAD DATA LOCAL INFILE %s INTO TABLE employees" cur.execute(sql, ('employees.csv',)) 40 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 41. Frameworks and Applications 41 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 42. MySQL Projects Depending on Connector/Python  MySQL Utilities – Command line utilities – Managing, dumping data, failover, ..  MySQL Fabric – Data distribution – High-availability for groups of MySQL servers  Both pure Python & no 3rd party modules 42 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 43. SQLAlchemy  SQL Toolkit and ORM (Object Relational Mapper)  Pythonic database access  Used by lots of other (web) frameworks  Connector/Python dialect included – Since SQLAlchemy 0.6 43 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 44. SQLAlchemy: Usage Connect String from sqlalchemy import create_engine DB_URI = "mysql+mysqlconnector://{user}:{pwd}@{host}:{port}/{db}" engine = create_engine(DB_URI.format( user='joe', pwd='mysecret', db='employees', host='127.0.0.1', port=3306) ) 44 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 45. Django  Web framework  ORM and database API  No support for Connector/Python  But Connector/Python 1.1.1 supports Django – Support features as microsecond precision – Works with Django 1.4 and 1.5 – Python 3 support 45 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 46. Django: Configuration Using Connector/Python backend # settings.py DATABASES = { 'default': { 'ENGINE': 'mysql.connector.django', } } 46 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 47. Q&A 47 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 48. Q&A More Information  Documentation & Examples – http://dev.mysql.com/doc/connector-python/en/index.html  Download – http://dev.mysql.com/downloads/connector/python/#downloads  Blog – http://geert.vanderkelen.org  Feedback & Forum – http://forums.mysql.com/list.php?50 – http://bugs.mysql.com/ 48 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 49. Graphic Section Divider 49 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
  • 50. 50 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.