Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/sfneal/mysql-toolkit
Syntax free MySQL toolkit... Build sophisticated queries programmatically, no need for tedious string manipulation. Handle's a remote MySQL database connection with a context manager, call almost any SQL query through a single import. Execute large SQL script (100mb+) on remote database, automatic command recognition, separation, and sequential execution.
https://github.com/sfneal/mysql-toolkit
manipulation mysql mysql-database python sql sqlparse
Last synced: 16 days ago
JSON representation
Syntax free MySQL toolkit... Build sophisticated queries programmatically, no need for tedious string manipulation. Handle's a remote MySQL database connection with a context manager, call almost any SQL query through a single import. Execute large SQL script (100mb+) on remote database, automatic command recognition, separation, and sequential execution.
- Host: GitHub
- URL: https://github.com/sfneal/mysql-toolkit
- Owner: sfneal
- License: mit
- Created: 2018-10-08T13:57:22.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2024-05-06T16:41:15.000Z (6 months ago)
- Last Synced: 2024-10-30T05:56:02.974Z (18 days ago)
- Topics: manipulation, mysql, mysql-database, python, sql, sqlparse
- Language: Python
- Homepage:
- Size: 39.3 MB
- Stars: 9
- Watchers: 2
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE.md
Awesome Lists containing this project
README
# MySQL-toolkit
[![GuardRails badge](https://badges.production.guardrails.io/mrstephenneal/mysql-toolkit.svg)](https://www.guardrails.io)
Development toolkit for building applications that interact with a MySQL database.
## Getting Started
These instructions will get you a copy of the project up and running on your local machine for development and testing purposes. See deployment for notes on how to deploy the project on a live system.
### PyPi installation
PyPi distribution
```
pip install mysql-toolkit
```## Usage
MySQL-tookit aims to provide an easy to use MySQL dependency that allows developers to integrate MySQL database's with their Python applications.
The entire MySQL-toolkit module can be utilized through a single import. To initialize a MySQL instance, simply provide a dictionary of MySQL database connection parameters with your call to MySQL within a context manager. Wrap all method and property calls with a context manager in order to automate connecting a disconnecting to a database.
```python
from mysql.toolkit import MySQL# Database connection parameters
config = {
"database": "xxxnameofyourdatabasexxx",
"host": "xxxhosturlxxx",
"password": "xxxyourpasswordxxx",
"port": xxxhostportxxx,
"raise_on_warnings": true,
"user": "xxxyourusernamexxx"
}# Establish a connection and execute queries
with MySQL(config) as sql:
# Select all rows from 'tablename'
results = sql.select_all('tablename')
# Update the row in 'anothertable' where the column 'id' equals 20421
sql.update('anothertable', ['column1', 'column2'], ['value1', 2], ('id', 20421)
# Retrieve a dictionary containing table, row_count key/values for every table in the database
counts = sql.count_rows_all()# Query will fail and raise an error because the database connection is only maintained inside with context
tables = sql.tables() # Retrieve all tables in the database
```## User API
The MySQL class's methods are broken down into several categories and inherited via sub-modules. All methods (with a few exceptions) are inherited to the core MySQL class, exposing compiled methods through a single class.### Manipulate
SQL commands that deal with the manipulation of data present in database.| Class | Method | Description |
| --- | --- | --- |
Select | select_all | Query all rows and columns from a table
Select | select_distinct | Query distinct values from a table
Select | select | Query every row and only certain columns from a table
Select | select\_all_join (coming soon) | Left join all rows and columns from two tables where a common value is shared
Select | select_limit | Run a select query with an offset and limit parameter
Select | select_where | Query certain columns from a table where a particular value is found
Insert | insert_uniques | Insert multiple rows into a table that do not already exist
Insert | insert | Insert a single row into a table
Insert | insert_many | Insert multiple rows into a table
Update | update | Update the values of a particular row where a value is met
Update | update_many | Update the values of several rows
Delete | delete | Delete existing rows from a table### Operations
SQL commands that deal with the definitions of data present in database.| Class | Method | Description |
| --- | --- | --- |
Operations | backup_database | Create a backup of a database
Operations | create_table | Generate and execute a create table query by parsing a 2D dataset
Operations | execute_script | Wrapper method for SQLScript class
Operations | script | Wrapper method providing access to the SQLScript class's methods and properties
Clone | copy_database | Copy a database's content and structure
Compare | compare_dbs | Compare the tables and row counts of two databases
Compare | compare_schemas | Compare the structures of two databases
Compare | compare_data | Compare the data stored in two databases
Remove | truncate | Empty a table by deleting all of its rows
Remove | truncate_database | Drop all tables in a database
Remove | drop | Drop a table from a database
Remove | drop_empty_tables | Drop all empty tables in a database
Remove | truncate | Empty a table by deleting all of its rows#### Structure
Properties and methods that return metadata about a MySQL table(s).| Class | Method | Description |
| --- | --- | --- |
Structure | tables | Retrieve a list of tables in the connected database
Structure | databases | Retrieve a list of databases that are accessible under the current connection
Structure | get\_unique\_column | Determine if any of the columns in a table contain exclusively unique values
Structure | count\_rows\_duplicates | Get the number of rows that do not contain distinct values
Structure | count\_rows\_all | Get the number of rows for every table in the database
Structure | count_rows | Get the number of rows in a particular table
Structure | count\_rows\_all | Get the number of rows for every table in the database
Structure | count\_rows\_all\_distinct | Get the number of distinct rows for every table in the database
Structure | count\_rows\_distinct | Get the number distinct of rows in a particular table
Structure | get\_duplicate\_vals | Retrieve duplicate values in a column of a table
Alter | add_column | Add a column to an existing table
Alter | drop_column | Remove a column to an existing table
Alter | add_comment | Add a comment to an existing column in a table
PrimaryKey | get\_primary\_key\_vals | Retrieve a list of primary key values in a table
PrimaryKey | get\_primary\_key | Retrieve the column which is the primary key for a table
PrimaryKey | set\_primary\_key | Create a Primary Key constraint on a specific column when the table is already created
PrimaryKey | set\_primary\_keys\_all | Create primary keys for every table in the connected database
PrimaryKey | drop\_primary\_key | Drop a Primary Key constraint for a specific table
ForeignKey | set\_foreign\_key | Create a Foreign Key constraint on a column from a table
Definition | get\_table\_definition | Retrieve a CREATE TABLE statement for an existing table
Definition | get\_column\_definition\_all | Retrieve the column definition statement for a column from a table
Definition | get\_column\_definition | Retrieve the column definition statement for a column from a table
Schema | show_schema | Print schema information
Schema | get_columns | Retrieve a list of columns in a table
Schema | get_schema\_dict | Retrieve the database schema in key, value pairs for easier references and comparisons
Schema | get_schema | Retrieve the database schema for a particular table## Built With
* [differentiate](https://github.com/mrstephenneal/differentiate) - Compare multiple data sets and retrieve the unique, non-repeated elements.
* [mysql-connector](https://dev.mysql.com/doc/connector-python/en/) - Self-container driver for communication with MySQL servers
* [looptools](https://github.com/mrstephenneal/looptools) - Logging output, timing processes and counting iterations
* [sqlparse](https://github.com/andialbrecht/sqlparse) - A non-validating SQL parser module for Python
* [tqdm](https://github.com/tqdm/tqdm) - A fast, extensible progress bar for Python## Contributing
Please read [CONTRIBUTING.md](https://github.com/mrstephenneal/mysql-toolkit/contributing.md) for details on our code of conduct, and the process for submitting pull requests to us.
## Versioning
We use [SemVer](http://semver.org/) for versioning. For the versions available, see the [tags on this repository](https://github.com/mrstephenneal/mysql-toolkit).
## Authors
* **Stephen Neal** - *Initial work* - [mysql-toolkit](https://github.com/mrstephenneal/mysql-toolkit)
## License
This project is licensed under the MIT License - see the [LICENSE.md](LICENSE.md) file for details