Python操作MySQL

本文介绍如何使用Python操作MySQL数据库,主要包含以下几点:

  • 连接mysql
  • 创建数据库
  • 创建表
  • 往表中插入数据
  • 查询数据

1、安装对应Python包

pip install mysql-connector-python

2、连接mysql

from mysql import connector
from mysql.connector import errorcode

try:
    client = connector.connect(user='xxxx', password='xxxxxx', host='xxxxxx', database='xxxx')
    cursor = client.cursor()
except connector.Error as err:
    client = None
    cursor = None
    if err.errno == errorcode.ER_ACCESS_DENIED_ERROR:
        print("Something is wrong with your user name or password")
    elif err.errno == errorcode.ER_BAD_DB_ERROR:
        print("Database does not exist")
    else:
        print(err)

3、创建数据库

with open("../../../../Database/MySQL/create_databases.sql", "r") as f:
    sql = f.read()
    try:
        cursor.execute(sql)
        print("Create databases successfully")
    except connector.Error as err:
        print(err)
        exit(1)

其中create_databases.sql中内容见
https://github.com/xiligey/Notes/blob/master/Database/MySQL/create_databases.sql

4、创建表

with open("../../../../Database/MySQL/create_tables.sql", "r") as f:
    sql = f.read()
    try:
        cursor.execute(sql)
        print("Create tables successfully")
    except connector.Error as err:
        print(err)
        exit(1)

其中create_tables.sql内容如下见
https://github.com/xiligey/Notes/blob/master/Database/MySQL/create_tables.sql

5、插入数据

from datetime import date, datetime, timedelta

tomorrow = datetime.now().date() + timedelta(days=1)
add_employee = ("INSERT INTO employees "
                "(first_name, last_name, hire_date, gender, birth_date) "
                "VALUES (%s, %s, %s, %s, %s)")
data_employee = ('Geert', 'Jack', tomorrow, 'M', date(1977, 6, 14))
cursor.execute(add_employee, data_employee)

add_salary = ("INSERT INTO salaries "
              "(emp_no, salary, from_date, to_date) "
              "VALUES (%(emp_no)s, %(salary)s, %(from_date)s, %(to_date)s)")

emp_no = cursor.lastrowid
data_salary = {
    'emp_no': emp_no,
    'salary': 50000,
    'from_date': tomorrow,
    'to_date': date(9999, 1, 1),
}
cursor.execute(add_salary, data_salary)
client.commit()

6、查询数据

query = ("SELECT first_name, last_name, hire_date FROM employees "
         "WHERE hire_date BETWEEN %s AND %s")

hire_start = date(1999, 1, 1)
hire_end = date(2999, 12, 31)

cursor.execute(query, (hire_start, hire_end))

for (first_name, last_name, hire_date) in cursor:
    print("{}, {} was hired on {:%d %b %Y}".format(
        last_name, first_name, hire_date))

7、关闭连接

最后记得关闭客户端连接

if cursor:
    cursor.close()
if client:
    client.close()

8、源码

https://github.com/xiligey/Notes/blob/master/Python/basic/io/database/mysql_operate.py

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值