PyMySQL は、純粋な Python で実装された MySQL クライアント操作ライブラリであり、トランザクション、ストアド プロシージャ、バッチ実行などをサポートします。 PyMySQL は Python Database API v2.0 仕様に従っており、純粋な Python MySQL クライアント ライブラリが含まれています。
pip install PyMySQL
import pymysql connection = pymysql.connect(host='localhost', port=3306, user='root', password='root', db='demo', charset='utf8')
パラメータリスト:
パラメータ | 説明 |
---|---|
host | データベースサーバーアドレス、デフォルト | user
password | |
database | |
port | |
バインド_ address | |
unix_socket | |
read_timeout | |
write_timeout | |
charset | |
sql_mode | |
read_default_file | |
への変換辞書デフォルトの代わりに使用します。これは、型のカスタム マーシャリングとアンマーシャリングを提供するために使用されます。 | |
デフォルトで Unicode 文字列を使用するかどうか。完了後に実行 SQL ステートメントを初期化します | |
接続タイムアウト、デフォルト 10、最小 1、最大 31536000 | |
今のところ、capath と暗号引数はサポートされていません。 | |
設定ファイル内の読み取り元のグループ。 | |
自動的に送信するかどうか、デフォルトは自動的に送信されず、パラメーター値は None です。 LOAD DATA LOCAL コマンドの使用を有効にするサーバー | |
local_infile | のブール値 (デフォルト: False) |
max_allowed_packet | サーバーに送信されるデータの最大量。デフォルトは16MB |
defer_connect | 遅延接続するかどうか、デフォルトはすぐに接続することです |
auth_plugin_map | そのプラグインを処理するクラスへのプラグイン名の辞書。クラスは Connection オブジェクトを引数として受け取ります。コンストラクターには、認証パケットを引数として受け取る認証メソッドが必要です。ダイアログ プラグインの場合、ユーザーから文字列を返すために、prompt(echo、prompt) メソッドを使用できます (実験的)。 |
server_public_key | SHA256認証プラグイン公開キー値(デフォルト: なし) |
db | パラメータデータベースのエイリアス |
passwd | パラメータパスワードのエイリアス |
binary_prefix | _binary を追加bytes と bytearray の接頭辞 (デフォルト: False) |
执行 SQL
注意:INSERT、UPDATE、DELETE 等修改数据的语句需手动执行 获取自增 IDcursor.lastrowid 查询数据# 执行查询 SQL cursor.execute('SELECT * FROM `users`') # 获取单条数据 cursor.fetchone() # 获取前N条数据 cursor.fetchmany(3) # 获取所有数据 cursor.fetchall() 游标控制所有的数据查询操作均基于游标,我们可以通过 cursor.scroll(1, mode='relative') # 相对当前位置移动 cursor.scroll(2, mode='absolute') # 相对绝对位置移动 设置游标类型查询时,默认返回的数据类型为元组,可以自定义设置返回类型。支持5种游标类型:
无缓冲游标类型,适用于数据量很大,一次性返回太慢,或者服务端带宽较小时。源码注释: Unbuffered Cursor, mainly useful for queries that return a lot of data, or for connections to remote servers over a slow network. 创建连接时,通过 cursorclass 参数指定类型: connection = pymysql.connect(host='localhost', user='root', password='root', db='demo', charset='utf8', cursorclass=pymysql.cursors.DictCursor) 也可以在创建游标时指定类型: cursor = connection.cursor(cursor=pymysql.cursors.DictCursor) 事务处理
防 SQL 注入
# 插入数据(元组或列表) effect_row = cursor.execute('INSERT INTO `users` (`name`, `age`) VALUES (%s, %s)', ('mary', 18)) # 插入数据(字典) info = {'name': 'fake', 'age': 15} effect_row = cursor.execute('INSERT INTO `users` (`name`, `age`) VALUES (%(name)s, %(age)s)', info) # 批量插入 effect_row = cursor.executemany( 'INSERT INTO `users` (`name`, `age`) VALUES (%s, %s) ON DUPLICATE KEY UPDATE age=VALUES(age)', [ ('hello', 13), ('fake', 28), ]) 参考资料
相关推荐: |
以上が純粋な Python で実装された MySQL クライアント操作ライブラリを共有するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。