python-python链接数据库mysql

环境:mac os

python DB API

Python访问数据库的统一接口规范
1.创建数据库连接对象conection
2.获取数据库交互对象cursor
3.查询,插入数据等操作
4关闭cursor,connection

下载mysql connector

pip3 install mysql-connector-python

创建连接对象connection

建立python与mysql之间的连接
创建方法:MySQLdb.Connec(参数)
这里写图片描述
connection对象支持的方法:

  • cursor()使用该连接创建返回游标
  • commit()提交
  • rollback()回滚
  • close()关闭连接

代码

import mysql.connector
from mysql.connector import errorcode
config = {
    'host': '127.0.0.1',
    'user': 'root',
    'password': '*********',
    'port': 3306,
    'database': 'all_test',
    'charset': 'utf8'
}
try:
    print('开始连接mysql')
    conn = mysql.connector.connect(**config)
    print(conn)
except mysql.connector.Error as err:
    if err.errno == errorcode.ER_ACCESS_DENIED_ERROR:
        print("用户名或密码错误")
    elif err.errno == errorcode.ER_BAD_DB_ERROR:
        print("数据库不存在")
    else:
        print(err)
cursor = conn.cursor()
try:
    sql_query = 'select * from stu ;'
    cursor.execute(sql_query)
    for name, age in cursor:
        print('[', name, age, ']')
except mysql.connector.Error as e:
    print('query error!{}'.format(e))
finally:
    print("关闭数据库连接")
    cursor.close()
    conn.close()

output:

开始连接mysql
<mysql.connector.connection.MySQLConnection object at 0x108df60b8>
[ 你好 78 ]
[ 学生啊 18 ]
关闭数据库连接

cursor游标对象(用于查询和获取结果)

这里写图片描述

查询语句注意:游标位置在移动,rowcount变

	sql_query = 'select * from stu ;'
    cursor = conn.cursor()
    cursor.execute(sql_query)
    print(cursor)
    print(cursor.rowcount)
    # for name, age in cursor:
    #     print('[', name, age, ']')
    print(cursor.fetchone())
    print(cursor.fetchmany(2))
    print(cursor.rowcount)
    print(cursor.fetchall())

插入语句

import mysql.connector
from mysql.connector import errorcode
config = {
    'host': '127.0.0.1',
    'user': 'root',
    'password': '1045152332zjy',
    'port': 3306,
    'database': 'all_test',
    'charset': 'utf8'
}
def select2(sql_cmd, param):
    """
    :param sql_cmd sql 命令
    :param param 参数
    """
    try:
        conn = mysql.connector.connect(**config)
    except mysql.connector.Error as e:
        print('connect fails!{}'.format(e))

    cursor = conn.cursor()
    try:
        cursor.execute(sql_cmd, param)
        conn.commit()
    except mysql.connector.Error as e:
        print('connect fails!{}'.format(e))
    finally:
        cursor.close()
        conn.close()

if __name__=='__main__':
    sql_cmd = "insert into stu (name, age) value (%s, %s)"
    param = ('name999', 999)
    select2(sql_cmd=sql_cmd, param=param)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值