# CustomPyMySQL
**Repository Path**: the_machine/custom-py-mysql
## Basic Information
- **Project Name**: CustomPyMySQL
- **Description**: No description available
- **Primary Language**: Python
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2024-05-22
- **Last Updated**: 2024-12-10
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
##
custom-py-mysql
-------------------------------------------
### Table of contents
- [Installation](#installation)
- [Usage](#usage)
- [Quick start](#quick-start)
- [Create table](#create-table)
- [Insert](#insert)
- [Update](#update)
- [Delete](#delete)
- [Select](#selete)
### Installation
```shell
pip install git+https://gitee.com/the_machine/custom-py-mysql.git
```
Install mysqlclient
```shell
sudo apt-get install python3-dev default-libmysqlclient-dev build-essential pkg-config # Debian /
sudo yum install python3-devel mysql-devel pkgconfig # Red Hat / CentOS
pip install mysqlclient
```
### Usage
#### Quick start
Store MySQL credentials in `auth.yaml`:
```yaml
database: user
host: '192.168.32.1'
# host: '127.0.0.1'
password: '0000'
port: '3306'
user: '1234'
```
Select user `name` and `age` from table `user_info`
```python
# Create connection from yaml
from custom_pymysql import mysql_connection
db = mysql_connection.from_yaml('auth.yaml')
from custom_pymysql.query import queries as qs
db.execute(
qs.Select("age", "name").from_("personal_info")
.where(
qs.ge(qs.DBColumn('age'), qs.DBValue(22))
)
).data_w_cols
```
##### Create table
```python
from custom_pymysql.components.column import DBColumn
from custom_pymysql.query.queries import CreateTable
from custom_pymysql.components import data_type
col_name = (DBColumn('name')
.set_data_type(data_type.TYPE_VARCHAR)
.set_comment('姓名')
.set_size(20)
.set_nullable(False)
)
col_age = (
DBColumn('age')
.set_data_type(data_type.TYPE_INT)
.set_comment('年龄')
.set_nullable(False)
)
col_dob = (
DBColumn('dob')
.set_data_type(data_type.TYPE_DATE)
.set_comment('出生日期')
.set_nullable()
)
col_id = (
DBColumn('pid')
.set_data_type(data_type.TYPE_CHAR)
.set_size(5)
.set_nullable(False)
.set_comment('身份标识')
)
q = (
CreateTable('personal_info')
.set_columns(col_name, col_age, col_dob, col_id)
.set_comment("This is an example")
.set_primary_key(col_id)
)
print(q)
```
##### Selete
```python
from custom_pymysql.query.queries import Select
from custom_pymysql.components.column import DBColumn
from custom_pymysql.components.value import DBValue
from custom_pymysql.query import operator
s = (
Select("name", DBColumn("age"))
.from_("personal_info")
.where(
operator.gt(DBColumn('age'), DBValue(14)),
operator.contains(DBColumn('name'), '张'),
operator.eq(DBColumn('pid'), DBValue('12345'))
)
)
print(s)
```
##### Insert
```python
from custom_pymysql.queries import InsertInto
from datetime import datetime
from custom_pymysql.components.data_process import DEFAULT_DATETIME_FORMAT
from custom_pymysql.components.column import DBColumn
data = [
{'name': '张三', 'age': 20, 'pid': '12345'},
{'name': '李四', 'age': 22, 'pid': '12346'},
{'name': '王五', 'pid': '12347'},
{'name': '赵六', 'register_time': datetime.strptime("2022-01-01 10:10:10", DEFAULT_DATETIME_FORMAT)}
]
q = (
InsertInto('personal_info')
.values(data)
.to_query()
)
print(q)
cols = ['name', DBColumn('age')]
data = [
['张三', 33],
['李四', 44]
]
q = (
InsertInto('personal_info')
.columns(*cols)
.values(data)
.to_query()
)
print(q)
```
##### Update
```python
from custom_pymysql.query.queries import Update
from custom_pymysql.components.column import DBColumn
from custom_pymysql.components.value import DBValue
from custom_pymysql.query import operator
s = (
Update("personal_info")
.set(name='张三三', age=22, dob=None)
.where(
operator.gt(DBColumn('age'), DBValue(14)),
operator.contains(DBColumn('name'), '张'),
operator.eq(DBColumn('pid'), DBValue('12345'))
)
)
print(s)
```
##### Delete
```python
from custom_pymysql.components.column import DBColumn
from custom_pymysql.components.value import DBValue
from custom_pymysql.query.queries import DeleteFrom
from custom_pymysql.query import operator
q = (
DeleteFrom("company")
.where(
operator.eq(DBColumn('name'), DBValue('test company')),
operator.gt(DBColumn('create_time'), DBValue('2000-01-01'))
)
)
print(q)
```