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.
pip install sqlstar
if you need help
sqlstar -h
Guides 📝
for now, there is only mysql backend...
import sqlstar
# driver://user:passwd@host:port/dbname
mysql = sqlstar.Database('mysql://root:***@localhost/tmp')
mysql.connect()
QUERY = '''
SELECT *
FROM Girls
WHERE AGE BETWEEN 20 AND 24
AND BOYFRIEND IS NULL
ORDER BY WHITE, RICH, BEAUTY DESC;
'''
df = mysql.fetch_df(QUERY)
Fetch all the rows
data = mysql.fetch_all(QUERY)
Fetch several rows
data = mysql.fetch_many(QUERY, 3)
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 ;
""")
mysql.insert_many(table, data, cols)
mysql.insert_df(table, df)
mysql.export_csv(query, fname, sep)
mysql.export_excel(query, fname)
Nice Features ✨
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
mysql.create_table("users", df)
if you only want to specify some of them
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.
mysql.rename_table(table, name)
mysql.rename_column(table, column, name, dtype)
mysql.add_column(table, column, dtype, comment, after)
mysql.add_table_comment(table, comment)
mysql.change_column_attribute(table, column, dtype, notnull, comment)
mysql.add_primary_key(table, primary_key)
mysql.truncate_table(table)
mysql.drop_table(table)
mysql.drop_column(table, column)