https://github.com/szj2ys/sqlstar
✨ Awesome databases framework that shines ✨
https://github.com/szj2ys/sqlstar
database mysql python sqlite sqlite3
Last synced: 4 months ago
JSON representation
✨ Awesome databases framework that shines ✨
- Host: GitHub
- URL: https://github.com/szj2ys/sqlstar
- Owner: szj2ys
- License: mit
- Created: 2021-09-10T00:34:49.000Z (almost 5 years ago)
- Default Branch: master
- Last Pushed: 2024-12-19T02:33:22.000Z (over 1 year ago)
- Last Synced: 2025-11-27T22:45:34.814Z (7 months ago)
- Topics: database, mysql, python, sqlite, sqlite3
- Language: Python
- Homepage:
- Size: 2.55 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
✨ Awesome databases framework that shines ✨
Breaking changes ⚙ 🔑 🎉 🎠 ❌
- **easy to use:** lots of out-of-the-box methods.
- **less bug:** not like others, I don't want to name it, and if you
unluckily enough to encounter, it's easy to solve by yourself.
## Installation ⚙🙈
```shell
pip install sqlstar
```
if you need help
```shell
sqlstar -h
```
## Tips and tricks ✅
Guides 📝
>for now, there is only mysql backend...
## connection
```python
import sqlstar
# driver://user:passwd@host:port/dbname
mysql = sqlstar.Database('mysql://root:***@localhost/tmp')
mysql.connect()
```
## Query
```python
QUERY = '''
SELECT *
FROM Girls
WHERE AGE BETWEEN 20 AND 24
AND BOYFRIEND IS NULL
ORDER BY WHITE, RICH, BEAUTY DESC;
'''
```
### Fetch data, and format result into Dataframe
```python
df = mysql.fetch_df(QUERY)
```
Fetch all the rows
```python
data = mysql.fetch_all(QUERY)
```
Fetch several rows
```python
data = mysql.fetch_many(QUERY, 3)
```
## Execute
```python
mysql.execute("""
CREATE TABLE `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`email` varchar(255) COLLATE utf8_bin NOT NULL,
`password` varchar(255) COLLATE utf8_bin NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin
AUTO_INCREMENT=1 ;
""")
```
## Insert
### Insert many records
```python
mysql.insert_many(table, data, cols)
```
### Insert Dataframe type of data
```python
mysql.insert_df(table, df)
```
## Export
### Export result to csv
```python
mysql.export_csv(query, fname, sep)
```
### Export result to excel
```python
mysql.export_excel(query, fname)
```
Nice Features ✨
### Create table
```python
mysql.create_table(
"users",
comments={
"name": "姓名",
"height": "身高",
"weight": "体重"
},
dtypes={
"varchar(30)": [
"name",
"occupation",
],
"float": ["height", "weight"],
"int": ["age"],
},
)
```
if you have data, you can make it more simple, just like this
```python
mysql.create_table("users", df)
```
if you only want to specify some of them
```python
mysql.create_table(
table='news_spider',
df=df,
comments={
"create_time": "插入时间",
"title": "标题",
"content": "正文",
"author": "作者",
"publish_time": "发布时间",
"read_num": "阅读量",
},
# if type is not given, sqlstar will automatically inference
dtypes={
"datetime": ["create_time", "publish_time"],
"longtext": ["content"],
"varchar(100)": ["title", "author"],
"decimal(10, 3)": ["read_num"]
})
```
You don't need to fill in everything, and you just need to fill in
comment or data type that you want to specify, then
`sqlstar` will do the rest for you.
### Rename table
```python
mysql.rename_table(table, name)
```
### Rename column
```python
mysql.rename_column(table, column, name, dtype)
```
### Add new column
```python
mysql.add_column(table, column, dtype, comment, after)
```
### Add comment for table
```python
mysql.add_table_comment(table, comment)
```
### Change column's attribute
```python
mysql.change_column_attribute(table, column, dtype, notnull, comment)
```
### Set primary key
```python
mysql.add_primary_key(table, primary_key)
```
### Truncate table's data, but keep the table structure
```python
mysql.truncate_table(table)
```
### Drop table
```python
mysql.drop_table(table)
```
### Drop column
```python
mysql.drop_column(table, column)
```