Skip to content

Commit

Permalink
update dev-guide-sample-application-python-mysql-connector (pingcap#1…
Browse files Browse the repository at this point in the history
  • Loading branch information
ti-chi-bot authored Jan 24, 2024
1 parent 04a26f6 commit 13d5090
Showing 1 changed file with 17 additions and 18 deletions.
35 changes: 17 additions & 18 deletions develop/dev-guide-sample-application-python-mysql-connector.md
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ pip install -r requirements.txt
6. 复制并粘贴对应连接字符串至 `.env` 中。示例结果如下:

```dotenv
TIDB_HOST='{host}' # e.g. gateway01.ap-northeast-1.prod.aws.tidbcloud.com
TIDB_HOST='{host}' # e.g. xxxxxx.aws.tidbcloud.com
TIDB_PORT='4000'
TIDB_USER='{user}' # e.g. xxxxxx.root
TIDB_PASSWORD='{password}'
Expand Down Expand Up @@ -117,9 +117,9 @@ pip install -r requirements.txt
5. 复制并粘贴对应的连接字符串至 `.env` 中。示例结果如下:

```dotenv
TIDB_HOST='{host}' # e.g. tidb.xxxx.clusters.tidb-cloud.com
TIDB_HOST='{host}' # e.g. xxxxxx.aws.tidbcloud.com
TIDB_PORT='4000'
TIDB_USER='{user}' # e.g. root
TIDB_USER='{user}' # e.g. xxxxxx.root
TIDB_PASSWORD='{password}'
TIDB_DB_NAME='test'
CA_PATH='{your-downloaded-ca-path}'
Expand Down Expand Up @@ -177,21 +177,20 @@ pip install -r requirements.txt

```python
def get_connection(autocommit: bool = True) -> MySQLConnection:
config = Config()
db_conf = {
"host": ${tidb_host},
"port": ${tidb_port},
"user": ${tidb_user},
"password": ${tidb_password},
"database": ${tidb_db_name},
"host": '${tidb_host}',
"port": '${tidb_port}',
"user": '${tidb_user}',
"password": '${tidb_password}',
"database": '${tidb_db_name}',
"autocommit": autocommit,
"use_pure": True,
}
if ${ca_path}:
if '${ca_path}':
db_conf["ssl_verify_cert"] = True
db_conf["ssl_verify_identity"] = True
db_conf["ssl_ca"] = ${ca_path}
db_conf["ssl_ca"] = '${ca_path}'
return mysql.connector.connect(**db_conf)
```
Expand All @@ -202,7 +201,7 @@ def get_connection(autocommit: bool = True) -> MySQLConnection:
```python
with get_connection(autocommit=True) as conn:
with conn.cursor() as cur:
player = ("1", 1, 1)
player = ("test", 1, 1)
cursor.execute("INSERT INTO players (id, coins, goods) VALUES (%s, %s, %s)", player)
```
Expand All @@ -224,8 +223,8 @@ with get_connection(autocommit=True) as conn:
```python
with get_connection(autocommit=True) as conn:
with conn.cursor() as cur:
player_id, amount, price="1", 10, 500
cursor.execute(
player_id, amount, price="test", 10, 500
cur.execute(
"UPDATE players SET goods = goods + %s, coins = coins + %s WHERE id = %s",
(-amount, price, player_id),
)
Expand All @@ -238,8 +237,8 @@ with get_connection(autocommit=True) as conn:
```python
with get_connection(autocommit=True) as conn:
with conn.cursor() as cur:
player_id = "1"
cursor.execute("DELETE FROM players WHERE id = %s", (player_id,))
player_id = "test"
cur.execute("DELETE FROM players WHERE id = %s", (player_id,))
```
更多信息参考[删除数据](/develop/dev-guide-delete-data.md)。
Expand All @@ -252,9 +251,9 @@ Python 驱动程序提供对数据库的底层访问,但要求开发者:
- 手动建立和释放数据库连接
- 手动管理数据库事务
- 手动将数据行(在 `mysql-connector-python` 中表示为元组 (tuple) 或者字典 (dict))映射为数据对象
- 手动将数据行(在 `mysql-connector-python` 中表示为元组 (Tuple) 或者字典 (Dictionary))映射为数据对象
建议仅在需要编写复杂的 SQL 语句时使用驱动程序。其他情况下,建议使用 [ORM](https://zh.wikipedia.org/wiki/对象关系映射) 框架进行开发,例如 [SQLAlchemy](/develop/dev-guide-sample-application-python-sqlalchemy.md)、[Peewee](/develop/dev-guide-sample-application-python-peewee.md) 和 Django。ORM 可以帮助你:
建议仅在需要编写复杂的 SQL 语句时使用驱动程序。其他情况下,建议使用 [ORM](https://zh.wikipedia.org/wiki/对象关系映射) 框架进行开发,例如 [SQLAlchemy](/develop/dev-guide-sample-application-python-sqlalchemy.md)、[Peewee](/develop/dev-guide-sample-application-python-peewee.md) 和 [Django](/develop/dev-guide-sample-application-python-django.md)。ORM 可以帮助你:
- 减少管理连接和事务的[模板代码](https://en.wikipedia.org/wiki/Boilerplate_code)
- 使用数据对象代替大量 SQL 语句来操作数据
Expand Down

0 comments on commit 13d5090

Please sign in to comment.