python---连接MySQL第五页

Connector/Python Connection Arguments

A connection with the MySQL server can be established using either the mysql.connector.connect() function or the mysql.connector.MySQLConnection() class:

Press CTRL+C to copy

cnx = mysql.connector.connect(user=‘joe‘, database=‘test‘)
cnx = MySQLConnection(user=‘joe‘, database=‘test‘)

The following table describes the arguments that can be used to initiate a connection. An asterisk (*) following an argument indicates a synonymous argument name, available only for compatibility with other Python MySQL drivers. Oracle recommends not to use these alternative names.

Table 7.1 Connection Arguments for Connector/Python

Argument Name Default Description
user (username*)   The user name used to authenticate with the MySQL server.
password (passwd*)   The password to authenticate the user with the MySQL server.
database (db*)   The database name to use when connecting with the MySQL server.
host 127.0.0.1 The host name or IP address of the MySQL server.
port 3306 The TCP/IP port of the MySQL server. Must be an integer.
unix_socket   The location of the Unix socket file.
auth_plugin   Authentication plugin to use. Added in 1.2.1.
use_unicode True Whether to use Unicode.
charset utf8 Which MySQL character set to use.
collation utf8_general_ci Which MySQL collation to use.
autocommit False Whether to autocommit transactions.
time_zone   Set the time_zone session variable at connection time.
sql_mode   Set the sql_mode session variable at connection time.
get_warnings False Whether to fetch warnings.
raise_on_warnings False Whether to raise an exception on warnings.
connection_timeout (connect_timeout*)   Timeout for the TCP and Unix socket connections.
client_flags   MySQL client flags.
buffered False Whether cursor objects fetch the results immediately after executing queries.
raw False Whether MySQL results are returned as is, rather than converted to Python types.
ssl_ca   File containing the SSL certificate authority.
ssl_cert   File containing the SSL certificate file.
ssl_key   File containing the SSL key.
ssl_verify_cert False When set to True, checks the server certificate against the certificate file specified by the ssl_ca option. Any mismatch causes a ValueError exception.
force_ipv6 False When set to True, uses IPv6 when an address resolves to both IPv4 and IPv6. By default, IPv4 is used in such cases.
dsn   Not supported (raises NotSupportedError when used).
pool_name   Connection pool name. Added in 1.1.1.
pool_size 5 Connection pool size. Added in 1.1.1.
pool_reset_session True Whether to reset session variables when connection is returned to pool. Added in 1.1.5.
compress False Whether to use compressed client/server protocol. Added in 1.1.2.
converter_class   Converter class to use. Added in 1.1.2.
fabric   MySQL Fabric connection arguments. Added in 1.2.0.
failover   Server failover sequence. Added in 1.2.1.
option_files   Which option files to read. Added in 2.0.0.
option_groups [‘client‘, ‘connector_python‘] Which groups to read from option files. Added in 2.0.0.
allow_local_infile True Whether to enable LOAD DATA LOCAL INFILE. Added in 2.0.0.
use_pure True Whether to use pure Python or C Extension. Added in 2.1.1.

MySQL Authentication Options

Authentication with MySQL uses username and password.

Note

MySQL Connector/Python does not support the old, less-secure password protocols of MySQL versions prior to 4.1.

When the database argument is given, the current database is set to the given value. To change the current database later, execute a USE SQL statement or set the database property of the MySQLConnection instance.

By default, Connector/Python tries to connect to a MySQL server running on the local host using TCP/IP. The host argument defaults to IP address 127.0.0.1 and port to 3306. Unix sockets are supported by setting unix_socket. Named pipes on the Windows platform are not supported.

Connector/Python 1.2.1 and up supports authentication plugins found in MySQL 5.6. This includes mysql_clear_password and sha256_password, both of which require an SSL connection. The sha256_password plugin does not work over a non-SSL connection because Connector/Python does not support RSA encryption.

The connect() method supports an auth_plugin argument that can be used to force use of a particular plugin. For example, if the server is configured to use sha256_password by default and you want to connect to an account that authenticates using mysql_native_password, either connect using SSL or specify auth_plugin=‘mysql_native_password‘.

Character Encoding

By default, strings coming from MySQL are returned as Python Unicode literals. To change this behavior, set use_unicode to False. You can change the character setting for the client connection through the charset argument. To change the character set after connecting to MySQL, set the charset property of the MySQLConnection instance. This technique is preferred over using the SET NAMES SQL statement directly. Similar to the charset property, you can set the collation for the current MySQL session.

Transactions

The autocommit value defaults to False, so transactions are not automatically committed. Call the commit() method of the MySQLConnection instance within your application after doing a set of related insert, update, and delete operations. For data consistency and high throughput for write operations, it is best to leave the autocommit configuration option turned off when using InnoDB or other transactional tables.

Time Zones

The time zone can be set per connection using the time_zone argument. This is useful, for example, if the MySQL server is set to UTC and TIMESTAMP values should be returned by MySQL converted to the PST time zone.

SQL Modes

MySQL supports so-called SQL Modes. which change the behavior of the server globally or per connection. For example, to have warnings raised as errors, set sql_mode to TRADITIONAL. For more information, see Server SQL Modes.

Troubleshooting and Error Handling

Warnings generated by queries are fetched automatically when get_warnings is set to True. You can also immediately raise an exception by setting raise_on_warnings to True. Consider using the MySQL sql_mode setting for turning warnings into errors.

To set a timeout value for connections, use connection_timeout.

Enabling and Disabling Features Using Client Flags

MySQL uses client flags to enable or disable features. Using the client_flags argument, you have control of what is set. To find out what flags are available, use the following:

from mysql.connector.constants import ClientFlag
print ‘\n‘.join(ClientFlag.get_full_info())

If client_flags is not specified (that is, it is zero), defaults are used for MySQL v4.1 and later. If you specify an integer greater than 0, make sure all flags are set properly. A better way to set and unset flags individually is to use a list. For example, to set FOUND_ROWS, but disable the default LONG_FLAG:

flags = [ClientFlag.FOUND_ROWS, -ClientFlag.LONG_FLAG]
mysql.connector.connect(client_flags=flags)

Buffered Cursors for Result Sets

By default, MySQL Connector/Python does not buffer or prefetch results. This means that after a query is executed, your program is responsible for fetching the data. This avoids excessive memory use when queries return large result sets. If you know that the result set is small enough to handle all at once, you can fetch the results immediately by setting buffered to True. It is also possible to set this per cursor (see Section 10.2.6, “Method MySQLConnection.cursor()”).

Type Conversions

By default, MySQL types in result sets are converted automatically to Python types. For example, a DATETIME column value becomes a datetime.datetime object. To disable conversion, set the raw argument to True. You might do this to get better performance or perform different types of conversion yourself.

Connecting through SSL

Using SSL connections is possible when your Python installation supports SSL, that is, when it is compiled against the OpenSSL libraries. When you provide the ssl_ca, ssl_key and ssl_cert arguments, the connection switches to SSL, and the client_flags option includes the ClientFlag.SSL value automatically. You can use this in combination with the compressed argument set to True.

As of Connector/Python 1.2.1, it is possible to establish an SSL connection using only the ssl_ca argument. The ssl_key and ssl_cert arguments are optional. However, when either is given, both must be given or an AttributeError is raised.

Press CTRL+C to copy

# Note (Example is valid for Python v2 and v3)
from __future__ import print_function 

import sys 

#sys.path.insert(0, ‘python{0}/‘.format(sys.version_info[0])) 

import mysql.connector
from mysql.connector.constants import ClientFlag 

config = {
    ‘user‘: ‘ssluser‘,
    ‘password‘: ‘asecret‘,
    ‘host‘: ‘127.0.0.1‘,
    ‘client_flags‘: [ClientFlag.SSL],
    ‘ssl_ca‘: ‘/opt/mysql/ssl/ca.pem‘,
    ‘ssl_cert‘: ‘/opt/mysql/ssl/client-cert.pem‘,
    ‘ssl_key‘: ‘/opt/mysql/ssl/client-key.pem‘,
} 

cnx = mysql.connector.connect(**config)
cur = cnx.cursor(buffered=True)
cur.execute("SHOW STATUS LIKE ‘Ssl_cipher‘")
print(cur.fetchone())
cur.close()
cnx.close()

Connection Pooling

With either the pool_name or pool_size argument present, Connector/Python creates the new pool. If the pool_name argument is not given, the connect() call automatically generates the name, composed from whichever of the host, port, user, and database connection arguments are given, in that order. If the pool_size argument is not given, the default size is 5 connections.

The pool_reset_session permits control over whether session variables are reset when the connection is returned to the pool. The default is to reset them.

Connection pooling is supported as of Connector/Python 1.1.1. See Section 9.1, “Connector/Python Connection Pooling”.

Protocol Compression

The boolean compress argument indicates whether to use the compressed client/server protocol (default False). This provides an easier alternative to setting the ClientFlag.COMPRESS flag. This argument is available as of Connector/Python 1.1.2.

Converter Class

The converter_class argument takes a class and sets it when configuring the connection. An AttributeError is raised if the custom converter class is not a subclass of conversion.MySQLConverterBase. This argument is available as of Connector/Python 1.1.2. Before 1.1.2, setting a custom converter class is possible only after instantiating a new connection object.

The boolean compress argument indicates whether to use the compressed client/server protocol (default False). This provides an easier alternative to setting the ClientFlag.COMPRESS flag. This argument is available as of Connector/Python 1.1.2.

MySQL Fabric Support

To request a MySQL Fabric connection, provide a fabric argument that specifies to contact Fabric. For details, see Requesting a Fabric Connection.

Server Failover

As of Connector/Python 1.2.1, the connect() method accepts a failover argument that provides information to use for server failover in the event of connection failures. The argument value is a tuple or list of dictionaries (tuple is preferred because it is nonmutable). Each dictionary contains connection arguments for a given server in the failover sequence. Permitted dictionary values are: user, password, host, port, unix_socket, database, pool_name, pool_size.

Option File Support

As of Connector/Python 2.0.0, option files are supported using two options for connect():

  • option_files: Which option files to read. The value can be a file path name (a string) or a sequence of path name strings. By default, Connector/Python reads no option files, so this argument must be given explicitly to cause option files to be read. Files are read in the order specified.
  • option_groups: Which groups to read from option files, if option files are read. The value can be an option group name (a string) or a sequence of group name strings. If this argument is not given, the default value is [‘client, ‘connector_python‘] to read the [client] and [connector_python] groups.

For more information, see Section 7.2, “Connector/Python Option-File Support”.

LOAD DATA LOCAL INFILE

Prior to Connector/Python 2.0.0, to enable use of LOAD DATA LOCAL INFILE, clients had to explicitly set the ClientFlag.LOCAL_FILES flag. As of 2.0.0, this flag is enabled by default. To disable it, the allow_local_infile connection option can be set to False at connect time (the default is True).

Compatibitility with Other Connection Interfaces

passwd, db and connect_timeout are valid for compatibility with other MySQL interfaces and are respectively the same as password, database and connection_timeout. The latter take precedence. Data source name syntax or dsn is not used; if specified, it raises a NotSupportedError exception.

Client/Server Protocol Implementation

Connector/Python can use a pure Python interface to MySQL, or a C Extension that uses the MySQL C client library. The use_pure connection argument determines which. The default is True (use the pure Python implementation). Setting use_pure to False causes the connection to use the C Extension if your Connector/Python installation includes it.

The use_pure argument is available as of Connector/Python 2.1.1. For more information, see Chapter 8, The Connector/Python C Extension.

时间: 2024-10-17 16:01:48

python---连接MySQL第五页的相关文章

Python连接Mysql数据库(Debian)

Python连接Mysql数据库(Debian) 以下是Python 2.*版本的安装方法,MySQL-python暂不支持Python 3.*版本 提前要做的工作: 安装setuptools,在终端中运行 wget https://bootstrap.pypa.io/ez_setup.py -O - | sudo python 安装pip,下载“get_pip.py”,运行 python get_pip.py 运行如下命令装好必要的包 sudo apt-get install python-d

Python连接MySQL的实例代码

Python连接MySQL的实例代码 MySQLdb下载地址:http://sourceforge.net/projects/mysql-python/ 下载解压缩后放到%Python_HOME%/Lib/site-packages目录中,python会自动找到此包. MySQLdb基本上是MySQL C API的Python版,遵循Python Database API Specification v2.0. 其他: 1. 平台及版本 linux 内核2.6,gcc 3.4.4,glibc 2

python 连接mysql多层结构实例

一.python 连接mysql多层结构: 目录文件介绍: sqlexec             sql执行操作,例:增删改查 table                 数据库表模块 一个表一个模块 index.py            主文件 conf.py              数据库连接信息 目录结构如下: -rw-r--r-- 1 root root     167 Jun 22 20:36 conf.py-rw-r--r-- 1 root root     244 Jun 2

[笔记]--在Ubuntu系统用Python连接Mysql数据库

环境:Ubuntu11.10,Python2.7,Mysql5.0.95 在Ubuntu终端输入命令安装Python的Mysql模块 sudo apt-get install python-mysqldb 就这么简单: 运行一下脚本: #!/usr/bin/python #-*-coding=utf-8# # import MySQLdb cn = MySQLdb.Connection(host="192.168.88.124",user="root",passwd

Python连接MySQL数据库之pymysql模块使用

Python连接MySQL数据库之pymysql模块使用 Python3连接MySQL PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用mysqldb. Django中也可以使用PyMySQL连接MySQL数据库. PyMySQL安装 pip install pymysql 连接数据库 注意事项 在进行本文以下内容之前需要注意: 你有一个MySQL数据库,并且已经启动. 你有可以连接该数据库的用户名和密码 你有一个有权限操作的datab

python入门(十七)python连接mysql数据库

mysql 数据库:关系型数据库mysql:互联网公司 sqllite:小型数据库,占用资源少,手机里面使用oracle:银行.保险.以前外企.sybase:银行+通信 互联网公司key:valuemongodb:磁盘上redis:内存数据库,持久化memchache:内存数据库 mysql -uroot -p密码装完了之后,cmd下输入mysql命令,需要将安装目录下的bin目录( mysql.exe 所在的目录)加入到path中 本地连接 mysql -uroot -p mysql -h12

python连接mysql操作(1)

python连接mysql操作(1) import pymysql import pymysql.cursors # 连接数据库 connect = pymysql.Connect( host='10.10.146.28', port=3306, user='admin_m', passwd='fcfmTbRw1tz2x5L5GvjJ', db='test', charset='utf8mb4' ) def create_table(): cursor = connect.cursor() #

寒假学习进度-6(Python连接MySQL数据库)

Python连接mysql和操作 软件:pycharm 开始在pycharm下面的Terminal中安装mysql时提醒pip版本不够,所以需要先升级一下pip python -m pip install --upgrade pip 升级完pip之后就可以下载mysql pip install mysql 下载完成后在setting中查看 进行代码测试 #!/usr/bin/python # -*- coding: UTF-8 -*- import MySQLdb db =MySQLdb.con

python连接mysql数据库——版本问题

今天终于解决了使用python连接数据库不成功的问题,现将过程总结如下: 一.出现的问题 在使用python连接mysql数据库是一直出现如下问题: 1.只能连接到我数据库中的的第一个数据库,但是不能操作里面的表,会报错表不存在.(表是存在的)2.更换其他数据库后,直接报错找不到该数据库.(数据库和表均存在) 运行连接数据库的代码,会出现: conn = pymysql.connect(user='root', password='password', database='XXX') Trace

python学习笔记(十五) - python连接mysql数据库

一. 安装mysql驱动: 由于mysql服务器以独立的进程运行,并通过网络对外服务,所以,需要支持python的mysql驱动来连接mysql服务器. 安装驱动:easy_install mysql-connector-python 二. 连接数据库: 下面演示使用python代码连接mysql: #!/usr/bin/env python # -*- coding: utf-8 -*- # utility @ Python # 导入MySQL驱动: import mysql.connecto