Mysql 创建数据库的设置默认编码和校验 python

在创建数据库的时候,经常用到一句:

CREATE DATABASE `xxxx` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; 

CREATE DATABASE `xxxx` :创建数据库  ,数据库的名称 使用 ` ` ,这里的 ` `  是ESC下面的那个符号 

DEFAULT CHARACTER SET utf8 :数据库字符集。设置数据库的默认编码为utf8  

COLLATE utf8_general_ci:数据库校对规则 

 

python 连接 mysql db ,多表查询

#!/usr/bin/env python
# encoding: utf-8
'''
@author: toby
@license: (C) Copyright 2013-2017, Node Supply Chain Manager Corporation Limited.
@contact: 
@software: pycharm
@file: sql.py
@time: 2020/6/6 11:47
@desc:
'''

import pymysql
# 添加用户允许从任何主机连接到mysql服务器
# GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;

class mydb:
    def __init__(self):

        self.db = pymysql.connect(
            host = 'localhost',
            user = 'root',
            password = '123456',
            port = 3306,
            database = 'mydb', charset="utf8"
        )
        print('服务器连接成功!')
        print('=============================')

        self.cursor = self.db.cursor()

# # 得到一个可以执行SQL语句并且将结果作为字典返回的游标
# cursor = db.cursor(cursor=pymysql.cursors.DictCursor)
#
# # 定义要执行的SQL语句
# sql = "select version()"
# cursor.execute(sql)
# # #使用fetchone()方法获取一条数据
# data = cursor.fetchone()
# print("Mysql version : %s"%data)

    def create_table(self):
        try:
            pass
            # 如果数据表已经存在使用execute()方法删除表。
            self.cursor.execute("DROP TABLE IF EXISTS EMPLOYEE")

            # 创建数据表SQL语句
            sql = """CREATE TABLE EMPLOYEE (
                             FIRST_NAME  CHAR(20) NOT NULL,
                             LAST_NAME  CHAR(20),
                             AGE INT,  
                             SEX CHAR(1),
                             INCOME FLOAT )"""

            self.cursor.execute(sql)
            print('创建table 成功!')
        except Exception as e:
            print(e)


    #创建
    def create_tb2(self):
        try:
            self.cursor.execute("DROP TABLE IF EXISTS department,staff")
            sql1 = """create
                    table
                    department(id  int,
                    name  varchar(20)  
                    )"""

            sql2 = """create
                    table staff(
                            id  int
                            primary key auto_increment,
                            name  varchar(20),  
                            sex  enum('male', 'female')  not null
                            default 'male',
                            age int,
                            dep_id  int
                        )"""

            self.cursor.execute(sql1)
            self.cursor.execute(sql2)
            print('创建table department   staff 成功!')
        except  Exception as  e:
            print(e)



    #插入
    def insert_tb(self):
        try:
            sql = """insert into department values
                    (200,'挖矿小分队'),
                    (201,'人力资源'),
                    (202,'销售'),
                    (203,'运营')"""
            sql2 = """insert into staff(name,sex,age,dep_id) values
                        ('程咬金','male',38,200),
                        ('露娜','female',26,201),
                        ('李白','male',38,201),
                        ('王昭君','female',28,202),
                        ('典韦','male',118,200),
                        ('小乔','female',16,204)"""
            self.cursor.execute(sql)
            self.cursor.execute(sql2)
            self.db.commit()
            print('insert department   staff 成功!')
        except Exception as e :
            print(e)
            print("插入失败")

    def duobiaosele(self):
        # 内链接 (常用) 只连接匹配的行 ,两个表中共同的属性的进行匹配显示,没有匹配上的 ,不显示
        try:
            print('================多表内联的查询=====================')
            sql = """
            select * from staff inner join department on staff.dep_id =department.id
            """
            self.cursor.execute(sql)

            res = self.cursor.fetchall()
            for i in res :
                print(i)
            print('=============================================')

            print('================多表外联的查询 左连接=====================')
            #外链常用   左连接
            sql2 ="""select * from staff left join department on staff.dep_id = department.id"""
            self.cursor.execute(sql2)

            res = self.cursor.fetchall()
            for i in res:
                print(i)

            print('=============================================')

            print('================多表外联的查询 右连接=====================')
            #外链  右连接
            sql3 = """select * from staff right join department on  staff.dep_id = department.id """
            self.cursor.execute(sql3)

            res = self.cursor.fetchall()
            for i in res:
                print(i)

            print('=============================================')

            print('================多表全部外联的查询=====================')
            #全部外链  显示左右两个表全部记录
            sql4 =sql2+" union "+sql3
            self.cursor.execute(sql4)
            res = self.cursor.fetchall()
            for i in res:
                print(i)


        except Exception as  e:
            print(e)




    def db_close(self):
        # 关闭光标对象
        self.cursor.close()

        # 关闭数据库连接
        self.db.close()


if __name__ == '__main__':
    mydb = mydb()
    # mydb.create_tb2()
    # mydb.insert_tb()
    mydb.duobiaosele()
    mydb.db_close()

 

### 如何在MySQL创建数据库 #### 基础概念 MySQL是一种关系型数据库管理系统,其核心功能之一就是支持用户创建和管理数据库创建数据库的过程涉及初始化一个新的逻辑容器来存储数据对象,如表、视图和其他结构。 #### 步骤说明 以下是使用MySQL创建数据库的具体方法: 1. **安装并启动MySQL服务** 在执行任何数据库操作之前,确保已经正确安装并运行了MySQL服务器。如果尚未安装MySQL,则需按照官方文档完成安装流程[^1]。 2. **连接到MySQL服务器** 使用命令行客户端或其他图形界面工具(例如phpMyAdmin或Workbench),通过用户名和密登录至MySQL实例。 ```bash mysql -u root -p ``` 3. **编写SQL语句创建数据库** 利用`CREATE DATABASE`指令可以定义新的数据库名称及其字符集等相关属性。下面是一个标准的例子: ```sql CREATE DATABASE my_database CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; ``` 这里设置默认字符编码为utf8mb4以及对应的排序规则(utf8mb4_general_ci),适用于大多数国际化需求的应用场景[^2]。 4. **验证数据库是否存在** 执行如下查询可查看当前系统中存在的所有数据库列表,并确认刚才新建的那个是否成功加入其中。 ```sql SHOW DATABASES; ``` 5. **切换工作环境到目标库** 当前会话可能仍停留在先前选定的某个旧有数据库下,因此需要显式指定接下来要操作的目标位置。 ```sql USE my_database; ``` 6. **进一步配置安全性和访问控制** 对于生产环境中部署的新建数据库而言,合理分配用户的权限是非常重要的一步。可以通过GRANT语句赋予特定账户相应的读写权利。 ```sql GRANT ALL PRIVILEGES ON my_database.* TO 'new_user'@'localhost' IDENTIFIED BY 'password'; FLUSH PRIVILEGES; ``` 以上即完成了基于MySQL平台上的基础数据库构建全过程概述[^3]。 #### 注意事项 - 数据库名应具有唯一性且遵循命名规范; - 考虑未来扩展性时提前规划好合适的字符集与校验方式; - 生产环境下务必加强安全性考量,比如限制远程机IP地址范围内的连接请求等。 ```python import mysql.connector # Python示例:利用mysql-connector-python模块实现自动化脚本建立数据库 try: connection = mysql.connector.connect( host='localhost', user='root', password='your_password' ) cursor = connection.cursor() create_db_query = "CREATE DATABASE IF NOT EXISTS testdb" cursor.execute(create_db_query) except Exception as e: print(f"Error occurred: {e}") finally: if (connection.is_connected()): cursor.close() connection.close() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值