summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCoprDistGit <infra@openeuler.org>2023-05-17 05:09:24 +0000
committerCoprDistGit <infra@openeuler.org>2023-05-17 05:09:24 +0000
commitf72e2b855e02a1262d0be6a130de84567f6bde6e (patch)
treec687b4a011339d3039ce66effe354c147083e7a0
parentd94a1f65e57049c15c1e9a09c598d1325398403c (diff)
automatic import of python-redasql
-rw-r--r--.gitignore1
-rw-r--r--python-redasql.spec1273
-rw-r--r--sources1
3 files changed, 1275 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index e69de29..26784ea 100644
--- a/.gitignore
+++ b/.gitignore
@@ -0,0 +1 @@
+/redasql-2.5.0.tar.gz
diff --git a/python-redasql.spec b/python-redasql.spec
new file mode 100644
index 0000000..2cca525
--- /dev/null
+++ b/python-redasql.spec
@@ -0,0 +1,1273 @@
+%global _empty_manifest_terminate_build 0
+Name: python-redasql
+Version: 2.5.0
+Release: 1
+Summary: please add a summary manually as the author left a blank one
+License: MIT
+URL: https://github.com/denzow/redasql
+Source0: https://mirrors.nju.edu.cn/pypi/web/packages/26/6d/14664bd3ace4ce88fab34dad01eaeec5bba5f3da0326ffacad1c57595b3d/redasql-2.5.0.tar.gz
+BuildArch: noarch
+
+Requires: python3-requests
+Requires: python3-prompt-toolkit
+Requires: python3-tabulate
+Requires: python3-pyperclip
+
+%description
+# RedaSQL
+![redasql](https://user-images.githubusercontent.com/4572217/138800787-b9525acd-8ab1-4f35-a762-948244b9caee.png)
+
+
+RedaSQL is querying tool for redash.
+I like `psql`(PostgreSQL CLI). so redasql resemble psql in some respects.
+
+## Install
+
+```bash
+pip install redasql
+```
+
+## supported readsh version
+
+RedaSQL supports Redash v8, v9 and v10.RedaSQL supports Redash v8, v9 and v10.
+
+## How To Use
+
+redasql need some arguments or environment variables.
+redasql prioritizes arguments over environment variables.
+
+
+| argument | env | mean |required|
+|------------------|-------------------------|-------------------------------------------------------------------------------------------------------------|---|
+| -k/--api-key | REDASQL_REDASH_APIKEY | API KEY(user api key) |True|
+| -s/--server-host | REDASQL_REDASH_ENDPOINT | Redash server hostname. ex) https://your.redash.server.host/ |True|
+| -p/--proxy | REDASQL_HTTP_PROXY | if your redash server restricted by Proxy, set url format. ex)http://user:pass@your.proxy.server:proxy-port |False|
+| -d/--data-source | None | initial connect datasource name. | False |
+| --ignore-rc | None | ignore `.redasqlrc` file | False(default false) |
+| --debug | None | debug mode | False(default false) |
+
+
+if you want to use redasql with direnv, rename `.envrc.sample` to `.envrc` and set attributes.
+
+### special commands
+
+redasql has management commands.
+
+```
+metadata=# \?
+\?: HELP META COMMANDS.
+\q: EXIT.
+\d: DESCRIBE TABLE
+\c: SELECT DATASOURCE.
+\x: QUERY RESULT TOGGLE PIVOT.
+\f: CHANGE RESULT FORMATTER ['table', 'markdown', 'markdown_with_sql', 'csv'].
+\l: LOAD QUERY FROM REDASH.
+\o: CHANGE THE OUTPUT DESTINATION TO ['stdout', 'stdout_and_clipboard', 'file'].
+\i: LOAD QUERY FROM LOCAL FILE.
+```
+
+### execute query
+
+see below
+
+#### start
+```
+$ redasql
+
+ ____ _ ____ ___ _
+| _ \ ___ __| | __ _/ ___| / _ \| |
+| |_) / _ \/ _` |/ _` \___ \| | | | |
+| _ < __/ (_| | (_| |___) | |_| | |___
+|_| \_\___|\__,_|\__,_|____/ \__\_\_____|
+
+ - redash query cli tool -
+
+SUCCESS CONNECT
+- server version 8.0.0+b32245
+- client version 0.1.0
+
+(No DataSource)=#
+```
+
+#### connect datasource
+
+use `\c data_source_name`. if not provide data_source_name, show all available data sources.
+
+```
+(No DataSource)=# \c metadata
+metadata=#
+```
+
+#### describe table
+
+use `\d table_name`. if not provide table_name, show all table names. if provide table_name with wildcard(\*), show describe matched tables.
+
+```
+metadata=# \d
+access_permissions
+alembic_version
+:
+queries
+query_results
+query_snippets
+users
+visualizations
+widgets
+metadata=# \d queries
+## queries
+- schedule
+- updated_at
+- api_key
+- name
+- id
+- version
+- is_draft
+- query
+- is_archived
+- tags
+- last_modified_by_id
+- org_id
+- options
+- query_hash
+- description
+- latest_query_data_id
+- search_vector
+- data_source_id
+- schedule_failures
+- created_at
+- user_id
+metadata=# \d query_*
+## query_results
+- id
+- data
+- org_id
+- query_hash
+- data_source_id
+- runtime
+- query
+- retrieved_at
+## query_snippets
+- updated_at
+- id
+- description
+- created_at
+- user_id
+- trigger
+- snippet
+- org_id
+
+```
+
+#### execute query
+
+enter your SQL and semicolon.
+
+```bash
+metadata=# select count(*) from queries;
++-------+
+| count |
++-------+
+| 3606 |
++-------+
+
+1 row returned.
+Time: 0.0159s
+
+```
+
+`\x` pivot result.
+
+
+
+```
+metadata=# \x
+set pivoted [True]
+
+metadata=# select id, user_id from queries limit 3;
+-[RECORD 1]-------
+ id: 543
+user_id: 40
+-[RECORD 2]-------
+ id: 717
+user_id: 40
+-[RECORD 3]-------
+ id: 515
+user_id: 38
+
+
+3 rows returned.
+Time: 0.0281s
+
+```
+
+### formats
+
+redasql support many formats. `\f <format_name>` and `\x`
+
+
+
+#### table format(default)
+
+```
+metadata=# select id, object_id, org_id, created_at from favorites limit 3;
+
++------+-------------+----------+--------------------------+
+| id | object_id | org_id | created_at |
+|------+-------------+----------+--------------------------|
+| 2 | 513 | 1 | 2019-05-22T05:30:17.185Z |
+| 3 | 514 | 1 | 2019-05-22T05:30:19.031Z |
+| 4 | 230 | 1 | 2019-05-22T08:17:12.693Z |
++------+-------------+----------+--------------------------+
+
+3 rows returned.
+Time: 0.0219s
+```
+
+#### table format(pivoted)
+
+```
+metadata=# select id, object_id, org_id, created_at from favorites limit 3;
+
+-[RECORD 1]----------
+ id| 2
+ object_id| 513
+ org_id| 1
+created_at| 2019-05-22T05:30:17.185Z
+-[RECORD 2]----------
+ id| 3
+ object_id| 514
+ org_id| 1
+created_at| 2019-05-22T05:30:19.031Z
+-[RECORD 3]----------
+ id| 4
+ object_id| 230
+ org_id| 1
+created_at| 2019-05-22T08:17:12.693Z
+
+
+3 rows returned.
+Time: 0.0223s
+
+```
+
+#### markdown
+
+```
+metadata=# \f markdown
+set formatter [markdown]
+metadata=# select id, object_id, org_id, created_at from favorites limit 3;
+
+| id | object_id | org_id | created_at |
+|------|-------------|----------|--------------------------|
+| 2 | 513 | 1 | 2019-05-22T05:30:17.185Z |
+| 3 | 514 | 1 | 2019-05-22T05:30:19.031Z |
+| 4 | 230 | 1 | 2019-05-22T08:17:12.693Z |
+
+3 rows returned.
+Time: 0.0207s
+
+```
+
+#### markdown(pivoted)
+
+
+```
+metadata=# select id, object_id, org_id, created_at from favorites limit 3;
+
+| colum_name | value |
+|--------------|--------------------------|
+| created_at | 2019-05-22T05:30:17.185Z |
+| org_id | 1 |
+| id | 2 |
+| object_id | 513 |
+| ----- | ----- |
+| created_at | 2019-05-22T05:30:19.031Z |
+| org_id | 1 |
+| id | 3 |
+| object_id | 514 |
+| ----- | ----- |
+| created_at | 2019-05-22T08:17:12.693Z |
+| org_id | 1 |
+| id | 4 |
+| object_id | 230 |
+
+3 rows returned.
+Time: 0.0106s
+```
+
+#### markdown_with_sql
+
+```
+```sql
+select id, object_id, org_id, created_at from favorites limit 3;
+``` .
+
+| id | object_id | org_id | created_at |
+|------|-------------|----------|--------------------------|
+| 2 | 513 | 1 | 2019-05-22T05:30:17.185Z |
+| 3 | 514 | 1 | 2019-05-22T05:30:19.031Z |
+| 4 | 230 | 1 | 2019-05-22T08:17:12.693Z |
+
+3 rows returned.
+Time: 0.0253s
+
+
+```
+
+#### csv
+
+```
+metadata=# \f csv
+set formatter [csv]
+metadata=# select id, object_id, org_id, created_at from favorites limit 3;
+
+id,object_id,org_id,created_at
+2,513,1,2019-05-22T05:30:17.185Z
+3,514,1,2019-05-22T05:30:19.031Z
+4,230,1,2019-05-22T08:17:12.693Z
+
+```
+
+### change output type
+
+#### stdout(default)
+
+result to stdout only.
+
+```
+metadata=# \o stdout
+set output [stdout]
+```
+
+#### stdout_with_clipboard
+
+result to stdout and clipboard.
+
+```
+metadata=# \o stdout_and_clipboard
+set output [stdout_and_clipboard]
+```
+
+#### file
+
+result to stdout and File.
+
+```
+metadata=# \o file /tmp/result.txt
+set output [file(/tmp/result.txt)]
+```
+
+
+### run sqlfile
+
+`\i` run local sqlfile.
+
+```
+metadata=# \i test.sql
+select count(*) from queries;
+
++---------+
+| count |
+|---------|
+| 3876 |
++---------+
+
+1 row returned.
+Time: 0.018s
+
+```
+
+### quit
+
+`ctrl + D` or `\q` quit redasql.
+
+```
+metadata=# \q
+Sayonara!
+```
+
+### .redasqlrc
+
+if you create `~/.redasqlrc`, redasql reads the file at startup and performs initial settings.
+
+
+## Contribution
+
+### run test
+
+#### start up containers (redash, MySQL, postgresql)
+
+unittest necessary redash test server. use docker-compose.yml in `./tests/docker/v{REDAHS_VERSION}`
+
+ - 8.0.2.b37747
+ - 9.0.0-beta.b49509
+ - 10.0.0.b50363
+
+```bash
+$ cd ./tests/docker/v8.0.2.b37747
+$ docker-compose up -d
+```
+
+#### run test
+
+```bash
+$ python -m unittest discover -s tests/
+```
+
+
+%package -n python3-redasql
+Summary: please add a summary manually as the author left a blank one
+Provides: python-redasql
+BuildRequires: python3-devel
+BuildRequires: python3-setuptools
+BuildRequires: python3-pip
+%description -n python3-redasql
+# RedaSQL
+![redasql](https://user-images.githubusercontent.com/4572217/138800787-b9525acd-8ab1-4f35-a762-948244b9caee.png)
+
+
+RedaSQL is querying tool for redash.
+I like `psql`(PostgreSQL CLI). so redasql resemble psql in some respects.
+
+## Install
+
+```bash
+pip install redasql
+```
+
+## supported readsh version
+
+RedaSQL supports Redash v8, v9 and v10.RedaSQL supports Redash v8, v9 and v10.
+
+## How To Use
+
+redasql need some arguments or environment variables.
+redasql prioritizes arguments over environment variables.
+
+
+| argument | env | mean |required|
+|------------------|-------------------------|-------------------------------------------------------------------------------------------------------------|---|
+| -k/--api-key | REDASQL_REDASH_APIKEY | API KEY(user api key) |True|
+| -s/--server-host | REDASQL_REDASH_ENDPOINT | Redash server hostname. ex) https://your.redash.server.host/ |True|
+| -p/--proxy | REDASQL_HTTP_PROXY | if your redash server restricted by Proxy, set url format. ex)http://user:pass@your.proxy.server:proxy-port |False|
+| -d/--data-source | None | initial connect datasource name. | False |
+| --ignore-rc | None | ignore `.redasqlrc` file | False(default false) |
+| --debug | None | debug mode | False(default false) |
+
+
+if you want to use redasql with direnv, rename `.envrc.sample` to `.envrc` and set attributes.
+
+### special commands
+
+redasql has management commands.
+
+```
+metadata=# \?
+\?: HELP META COMMANDS.
+\q: EXIT.
+\d: DESCRIBE TABLE
+\c: SELECT DATASOURCE.
+\x: QUERY RESULT TOGGLE PIVOT.
+\f: CHANGE RESULT FORMATTER ['table', 'markdown', 'markdown_with_sql', 'csv'].
+\l: LOAD QUERY FROM REDASH.
+\o: CHANGE THE OUTPUT DESTINATION TO ['stdout', 'stdout_and_clipboard', 'file'].
+\i: LOAD QUERY FROM LOCAL FILE.
+```
+
+### execute query
+
+see below
+
+#### start
+```
+$ redasql
+
+ ____ _ ____ ___ _
+| _ \ ___ __| | __ _/ ___| / _ \| |
+| |_) / _ \/ _` |/ _` \___ \| | | | |
+| _ < __/ (_| | (_| |___) | |_| | |___
+|_| \_\___|\__,_|\__,_|____/ \__\_\_____|
+
+ - redash query cli tool -
+
+SUCCESS CONNECT
+- server version 8.0.0+b32245
+- client version 0.1.0
+
+(No DataSource)=#
+```
+
+#### connect datasource
+
+use `\c data_source_name`. if not provide data_source_name, show all available data sources.
+
+```
+(No DataSource)=# \c metadata
+metadata=#
+```
+
+#### describe table
+
+use `\d table_name`. if not provide table_name, show all table names. if provide table_name with wildcard(\*), show describe matched tables.
+
+```
+metadata=# \d
+access_permissions
+alembic_version
+:
+queries
+query_results
+query_snippets
+users
+visualizations
+widgets
+metadata=# \d queries
+## queries
+- schedule
+- updated_at
+- api_key
+- name
+- id
+- version
+- is_draft
+- query
+- is_archived
+- tags
+- last_modified_by_id
+- org_id
+- options
+- query_hash
+- description
+- latest_query_data_id
+- search_vector
+- data_source_id
+- schedule_failures
+- created_at
+- user_id
+metadata=# \d query_*
+## query_results
+- id
+- data
+- org_id
+- query_hash
+- data_source_id
+- runtime
+- query
+- retrieved_at
+## query_snippets
+- updated_at
+- id
+- description
+- created_at
+- user_id
+- trigger
+- snippet
+- org_id
+
+```
+
+#### execute query
+
+enter your SQL and semicolon.
+
+```bash
+metadata=# select count(*) from queries;
++-------+
+| count |
++-------+
+| 3606 |
++-------+
+
+1 row returned.
+Time: 0.0159s
+
+```
+
+`\x` pivot result.
+
+
+
+```
+metadata=# \x
+set pivoted [True]
+
+metadata=# select id, user_id from queries limit 3;
+-[RECORD 1]-------
+ id: 543
+user_id: 40
+-[RECORD 2]-------
+ id: 717
+user_id: 40
+-[RECORD 3]-------
+ id: 515
+user_id: 38
+
+
+3 rows returned.
+Time: 0.0281s
+
+```
+
+### formats
+
+redasql support many formats. `\f <format_name>` and `\x`
+
+
+
+#### table format(default)
+
+```
+metadata=# select id, object_id, org_id, created_at from favorites limit 3;
+
++------+-------------+----------+--------------------------+
+| id | object_id | org_id | created_at |
+|------+-------------+----------+--------------------------|
+| 2 | 513 | 1 | 2019-05-22T05:30:17.185Z |
+| 3 | 514 | 1 | 2019-05-22T05:30:19.031Z |
+| 4 | 230 | 1 | 2019-05-22T08:17:12.693Z |
++------+-------------+----------+--------------------------+
+
+3 rows returned.
+Time: 0.0219s
+```
+
+#### table format(pivoted)
+
+```
+metadata=# select id, object_id, org_id, created_at from favorites limit 3;
+
+-[RECORD 1]----------
+ id| 2
+ object_id| 513
+ org_id| 1
+created_at| 2019-05-22T05:30:17.185Z
+-[RECORD 2]----------
+ id| 3
+ object_id| 514
+ org_id| 1
+created_at| 2019-05-22T05:30:19.031Z
+-[RECORD 3]----------
+ id| 4
+ object_id| 230
+ org_id| 1
+created_at| 2019-05-22T08:17:12.693Z
+
+
+3 rows returned.
+Time: 0.0223s
+
+```
+
+#### markdown
+
+```
+metadata=# \f markdown
+set formatter [markdown]
+metadata=# select id, object_id, org_id, created_at from favorites limit 3;
+
+| id | object_id | org_id | created_at |
+|------|-------------|----------|--------------------------|
+| 2 | 513 | 1 | 2019-05-22T05:30:17.185Z |
+| 3 | 514 | 1 | 2019-05-22T05:30:19.031Z |
+| 4 | 230 | 1 | 2019-05-22T08:17:12.693Z |
+
+3 rows returned.
+Time: 0.0207s
+
+```
+
+#### markdown(pivoted)
+
+
+```
+metadata=# select id, object_id, org_id, created_at from favorites limit 3;
+
+| colum_name | value |
+|--------------|--------------------------|
+| created_at | 2019-05-22T05:30:17.185Z |
+| org_id | 1 |
+| id | 2 |
+| object_id | 513 |
+| ----- | ----- |
+| created_at | 2019-05-22T05:30:19.031Z |
+| org_id | 1 |
+| id | 3 |
+| object_id | 514 |
+| ----- | ----- |
+| created_at | 2019-05-22T08:17:12.693Z |
+| org_id | 1 |
+| id | 4 |
+| object_id | 230 |
+
+3 rows returned.
+Time: 0.0106s
+```
+
+#### markdown_with_sql
+
+```
+```sql
+select id, object_id, org_id, created_at from favorites limit 3;
+``` .
+
+| id | object_id | org_id | created_at |
+|------|-------------|----------|--------------------------|
+| 2 | 513 | 1 | 2019-05-22T05:30:17.185Z |
+| 3 | 514 | 1 | 2019-05-22T05:30:19.031Z |
+| 4 | 230 | 1 | 2019-05-22T08:17:12.693Z |
+
+3 rows returned.
+Time: 0.0253s
+
+
+```
+
+#### csv
+
+```
+metadata=# \f csv
+set formatter [csv]
+metadata=# select id, object_id, org_id, created_at from favorites limit 3;
+
+id,object_id,org_id,created_at
+2,513,1,2019-05-22T05:30:17.185Z
+3,514,1,2019-05-22T05:30:19.031Z
+4,230,1,2019-05-22T08:17:12.693Z
+
+```
+
+### change output type
+
+#### stdout(default)
+
+result to stdout only.
+
+```
+metadata=# \o stdout
+set output [stdout]
+```
+
+#### stdout_with_clipboard
+
+result to stdout and clipboard.
+
+```
+metadata=# \o stdout_and_clipboard
+set output [stdout_and_clipboard]
+```
+
+#### file
+
+result to stdout and File.
+
+```
+metadata=# \o file /tmp/result.txt
+set output [file(/tmp/result.txt)]
+```
+
+
+### run sqlfile
+
+`\i` run local sqlfile.
+
+```
+metadata=# \i test.sql
+select count(*) from queries;
+
++---------+
+| count |
+|---------|
+| 3876 |
++---------+
+
+1 row returned.
+Time: 0.018s
+
+```
+
+### quit
+
+`ctrl + D` or `\q` quit redasql.
+
+```
+metadata=# \q
+Sayonara!
+```
+
+### .redasqlrc
+
+if you create `~/.redasqlrc`, redasql reads the file at startup and performs initial settings.
+
+
+## Contribution
+
+### run test
+
+#### start up containers (redash, MySQL, postgresql)
+
+unittest necessary redash test server. use docker-compose.yml in `./tests/docker/v{REDAHS_VERSION}`
+
+ - 8.0.2.b37747
+ - 9.0.0-beta.b49509
+ - 10.0.0.b50363
+
+```bash
+$ cd ./tests/docker/v8.0.2.b37747
+$ docker-compose up -d
+```
+
+#### run test
+
+```bash
+$ python -m unittest discover -s tests/
+```
+
+
+%package help
+Summary: Development documents and examples for redasql
+Provides: python3-redasql-doc
+%description help
+# RedaSQL
+![redasql](https://user-images.githubusercontent.com/4572217/138800787-b9525acd-8ab1-4f35-a762-948244b9caee.png)
+
+
+RedaSQL is querying tool for redash.
+I like `psql`(PostgreSQL CLI). so redasql resemble psql in some respects.
+
+## Install
+
+```bash
+pip install redasql
+```
+
+## supported readsh version
+
+RedaSQL supports Redash v8, v9 and v10.RedaSQL supports Redash v8, v9 and v10.
+
+## How To Use
+
+redasql need some arguments or environment variables.
+redasql prioritizes arguments over environment variables.
+
+
+| argument | env | mean |required|
+|------------------|-------------------------|-------------------------------------------------------------------------------------------------------------|---|
+| -k/--api-key | REDASQL_REDASH_APIKEY | API KEY(user api key) |True|
+| -s/--server-host | REDASQL_REDASH_ENDPOINT | Redash server hostname. ex) https://your.redash.server.host/ |True|
+| -p/--proxy | REDASQL_HTTP_PROXY | if your redash server restricted by Proxy, set url format. ex)http://user:pass@your.proxy.server:proxy-port |False|
+| -d/--data-source | None | initial connect datasource name. | False |
+| --ignore-rc | None | ignore `.redasqlrc` file | False(default false) |
+| --debug | None | debug mode | False(default false) |
+
+
+if you want to use redasql with direnv, rename `.envrc.sample` to `.envrc` and set attributes.
+
+### special commands
+
+redasql has management commands.
+
+```
+metadata=# \?
+\?: HELP META COMMANDS.
+\q: EXIT.
+\d: DESCRIBE TABLE
+\c: SELECT DATASOURCE.
+\x: QUERY RESULT TOGGLE PIVOT.
+\f: CHANGE RESULT FORMATTER ['table', 'markdown', 'markdown_with_sql', 'csv'].
+\l: LOAD QUERY FROM REDASH.
+\o: CHANGE THE OUTPUT DESTINATION TO ['stdout', 'stdout_and_clipboard', 'file'].
+\i: LOAD QUERY FROM LOCAL FILE.
+```
+
+### execute query
+
+see below
+
+#### start
+```
+$ redasql
+
+ ____ _ ____ ___ _
+| _ \ ___ __| | __ _/ ___| / _ \| |
+| |_) / _ \/ _` |/ _` \___ \| | | | |
+| _ < __/ (_| | (_| |___) | |_| | |___
+|_| \_\___|\__,_|\__,_|____/ \__\_\_____|
+
+ - redash query cli tool -
+
+SUCCESS CONNECT
+- server version 8.0.0+b32245
+- client version 0.1.0
+
+(No DataSource)=#
+```
+
+#### connect datasource
+
+use `\c data_source_name`. if not provide data_source_name, show all available data sources.
+
+```
+(No DataSource)=# \c metadata
+metadata=#
+```
+
+#### describe table
+
+use `\d table_name`. if not provide table_name, show all table names. if provide table_name with wildcard(\*), show describe matched tables.
+
+```
+metadata=# \d
+access_permissions
+alembic_version
+:
+queries
+query_results
+query_snippets
+users
+visualizations
+widgets
+metadata=# \d queries
+## queries
+- schedule
+- updated_at
+- api_key
+- name
+- id
+- version
+- is_draft
+- query
+- is_archived
+- tags
+- last_modified_by_id
+- org_id
+- options
+- query_hash
+- description
+- latest_query_data_id
+- search_vector
+- data_source_id
+- schedule_failures
+- created_at
+- user_id
+metadata=# \d query_*
+## query_results
+- id
+- data
+- org_id
+- query_hash
+- data_source_id
+- runtime
+- query
+- retrieved_at
+## query_snippets
+- updated_at
+- id
+- description
+- created_at
+- user_id
+- trigger
+- snippet
+- org_id
+
+```
+
+#### execute query
+
+enter your SQL and semicolon.
+
+```bash
+metadata=# select count(*) from queries;
++-------+
+| count |
++-------+
+| 3606 |
++-------+
+
+1 row returned.
+Time: 0.0159s
+
+```
+
+`\x` pivot result.
+
+
+
+```
+metadata=# \x
+set pivoted [True]
+
+metadata=# select id, user_id from queries limit 3;
+-[RECORD 1]-------
+ id: 543
+user_id: 40
+-[RECORD 2]-------
+ id: 717
+user_id: 40
+-[RECORD 3]-------
+ id: 515
+user_id: 38
+
+
+3 rows returned.
+Time: 0.0281s
+
+```
+
+### formats
+
+redasql support many formats. `\f <format_name>` and `\x`
+
+
+
+#### table format(default)
+
+```
+metadata=# select id, object_id, org_id, created_at from favorites limit 3;
+
++------+-------------+----------+--------------------------+
+| id | object_id | org_id | created_at |
+|------+-------------+----------+--------------------------|
+| 2 | 513 | 1 | 2019-05-22T05:30:17.185Z |
+| 3 | 514 | 1 | 2019-05-22T05:30:19.031Z |
+| 4 | 230 | 1 | 2019-05-22T08:17:12.693Z |
++------+-------------+----------+--------------------------+
+
+3 rows returned.
+Time: 0.0219s
+```
+
+#### table format(pivoted)
+
+```
+metadata=# select id, object_id, org_id, created_at from favorites limit 3;
+
+-[RECORD 1]----------
+ id| 2
+ object_id| 513
+ org_id| 1
+created_at| 2019-05-22T05:30:17.185Z
+-[RECORD 2]----------
+ id| 3
+ object_id| 514
+ org_id| 1
+created_at| 2019-05-22T05:30:19.031Z
+-[RECORD 3]----------
+ id| 4
+ object_id| 230
+ org_id| 1
+created_at| 2019-05-22T08:17:12.693Z
+
+
+3 rows returned.
+Time: 0.0223s
+
+```
+
+#### markdown
+
+```
+metadata=# \f markdown
+set formatter [markdown]
+metadata=# select id, object_id, org_id, created_at from favorites limit 3;
+
+| id | object_id | org_id | created_at |
+|------|-------------|----------|--------------------------|
+| 2 | 513 | 1 | 2019-05-22T05:30:17.185Z |
+| 3 | 514 | 1 | 2019-05-22T05:30:19.031Z |
+| 4 | 230 | 1 | 2019-05-22T08:17:12.693Z |
+
+3 rows returned.
+Time: 0.0207s
+
+```
+
+#### markdown(pivoted)
+
+
+```
+metadata=# select id, object_id, org_id, created_at from favorites limit 3;
+
+| colum_name | value |
+|--------------|--------------------------|
+| created_at | 2019-05-22T05:30:17.185Z |
+| org_id | 1 |
+| id | 2 |
+| object_id | 513 |
+| ----- | ----- |
+| created_at | 2019-05-22T05:30:19.031Z |
+| org_id | 1 |
+| id | 3 |
+| object_id | 514 |
+| ----- | ----- |
+| created_at | 2019-05-22T08:17:12.693Z |
+| org_id | 1 |
+| id | 4 |
+| object_id | 230 |
+
+3 rows returned.
+Time: 0.0106s
+```
+
+#### markdown_with_sql
+
+```
+```sql
+select id, object_id, org_id, created_at from favorites limit 3;
+``` .
+
+| id | object_id | org_id | created_at |
+|------|-------------|----------|--------------------------|
+| 2 | 513 | 1 | 2019-05-22T05:30:17.185Z |
+| 3 | 514 | 1 | 2019-05-22T05:30:19.031Z |
+| 4 | 230 | 1 | 2019-05-22T08:17:12.693Z |
+
+3 rows returned.
+Time: 0.0253s
+
+
+```
+
+#### csv
+
+```
+metadata=# \f csv
+set formatter [csv]
+metadata=# select id, object_id, org_id, created_at from favorites limit 3;
+
+id,object_id,org_id,created_at
+2,513,1,2019-05-22T05:30:17.185Z
+3,514,1,2019-05-22T05:30:19.031Z
+4,230,1,2019-05-22T08:17:12.693Z
+
+```
+
+### change output type
+
+#### stdout(default)
+
+result to stdout only.
+
+```
+metadata=# \o stdout
+set output [stdout]
+```
+
+#### stdout_with_clipboard
+
+result to stdout and clipboard.
+
+```
+metadata=# \o stdout_and_clipboard
+set output [stdout_and_clipboard]
+```
+
+#### file
+
+result to stdout and File.
+
+```
+metadata=# \o file /tmp/result.txt
+set output [file(/tmp/result.txt)]
+```
+
+
+### run sqlfile
+
+`\i` run local sqlfile.
+
+```
+metadata=# \i test.sql
+select count(*) from queries;
+
++---------+
+| count |
+|---------|
+| 3876 |
++---------+
+
+1 row returned.
+Time: 0.018s
+
+```
+
+### quit
+
+`ctrl + D` or `\q` quit redasql.
+
+```
+metadata=# \q
+Sayonara!
+```
+
+### .redasqlrc
+
+if you create `~/.redasqlrc`, redasql reads the file at startup and performs initial settings.
+
+
+## Contribution
+
+### run test
+
+#### start up containers (redash, MySQL, postgresql)
+
+unittest necessary redash test server. use docker-compose.yml in `./tests/docker/v{REDAHS_VERSION}`
+
+ - 8.0.2.b37747
+ - 9.0.0-beta.b49509
+ - 10.0.0.b50363
+
+```bash
+$ cd ./tests/docker/v8.0.2.b37747
+$ docker-compose up -d
+```
+
+#### run test
+
+```bash
+$ python -m unittest discover -s tests/
+```
+
+
+%prep
+%autosetup -n redasql-2.5.0
+
+%build
+%py3_build
+
+%install
+%py3_install
+install -d -m755 %{buildroot}/%{_pkgdocdir}
+if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi
+if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi
+if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi
+if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi
+pushd %{buildroot}
+if [ -d usr/lib ]; then
+ find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/lib64 ]; then
+ find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/bin ]; then
+ find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/sbin ]; then
+ find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+touch doclist.lst
+if [ -d usr/share/man ]; then
+ find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst
+fi
+popd
+mv %{buildroot}/filelist.lst .
+mv %{buildroot}/doclist.lst .
+
+%files -n python3-redasql -f filelist.lst
+%dir %{python3_sitelib}/*
+
+%files help -f doclist.lst
+%{_docdir}/*
+
+%changelog
+* Wed May 17 2023 Python_Bot <Python_Bot@openeuler.org> - 2.5.0-1
+- Package Spec generated
diff --git a/sources b/sources
new file mode 100644
index 0000000..f8643e4
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+1a508f8b86a01490fec3fe42e47d1294 redasql-2.5.0.tar.gz