記事ディレクトリ
Python 操作 mysql データベース
Python は mysql データベースを操作するため、3 番目のライブラリを使用する必要があります。pymysql
1.mysqlのインストール
公式ウェブサイト:https://www.mysql.com/
2.pymysqlをインストールする
pip install PyMySql -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
3、使用する
コードデモ:
import pymysql
conn = pymysql.connect(host="localhost",
user ="student",
password="student",
database="studentmanagementsystem",
port=3306,
charset="utf-8")
#获取游标对象
cursor =conn.cursor()
#执行
sql = "select * from student"
cursor.execute(sql)
#关闭数据库连接和游标
cursor.close()
conn.close()
1. ガイドパッケージ
import pymysql
2. データベース接続を作成する
conn = pymysql.connect(host="localhost",
user ="student",
password="student",
database="studentmanagementsystem",
port=3306,
charset="utf-8")
例証します:
- ホスト : データベースサーバー接続アドレス
- user : ログインユーザー名
- パスワード : パスワード
- データベース : 接続するデータベースの名前
- port : データベース接続が切断されました (デフォルトは 3306)
- charset: 文字セット (utf-8 に設定)
- autocommit: 自動的に送信するかどうか
- True: 自動コミット
- False: 手動で送信します
3. カーソルオブジェクトを取得する
cursor = conn.cursor()
説明する
-
- データベース接続オブジェクトのcursor()メソッドを呼び出してカーソルオブジェクトを取得します。
4. 追加、削除、変更、およびクエリ操作を実行します。
sql = "select * from student"
cursor.execute(sql)
説明する
- カーソルオブジェクトのexecute()メソッドを呼び出してSQL文を実行します。
- sql: 実行されるSQL文
お問い合わせ
- クエリで最初に見つかった結果を返します。
result1 = cursor.fetchone()
print(f"查询到的第一个结果:{result1}")
-
クエリによって返される結果の数はサイズで指定でき、デフォルトでは最初のクエリ結果が返されます。
((),())
result2 = cursor.fetchmany(size=2); print(f"查询2 行的数据:{result2}")
-
結果セット内のすべての行のデータを取得します。戻り値は次のとおりです。
((),(),..)
result3=cursor.fetchall() print(f"查询全部数据:{result3}")
-
結果セット内のレコードの合計数を取得します。
rowcount
count = cursor.rowcount print(f"student表中有{count}条数据")
追加、削除
一連の考え
1.导包
try:
程序前期,需要执行的代码
2.创建连接对象
3.获取游标对象
4.执行sql
+ 在图书表中插入一行数据
+ 主动抛出异常
+ 在英雄人物表中插入一行数据
调用提交事务:conn.commit()
except:
程序出现异常后,处理代码
调用事务回滚:conn.rollback()
finally:
程序结束时,需要执行的代码
5.关闭游标
6.关闭连接
操作する
- 自動コミット (推奨されません):
autocommit = True
- 手動提出 (推奨):
- トランザクションを送信します。
conn.commit()
- ロールバックトランザクション:
conn.rollback
- トランザクションを送信します。
サンプルコード
# 1. 导包
import pymysql
# 2. 创建数据库连接
conn = pymysql.connect(host="localhost",
user ="student",
password="student",
database="studentmanagementsystem",
port=3306)
cursor = conn.cursor()
try:
#这里sql可以是update,insert,delete语句
sql = "UPDATE student SET stu_name='ccx330' where stu_id ='00006'";
print(sql)
cursor.execute(sql)
# 提交事务
conn.commit()
print(cursor.rowcount)
except Exception as e:
#回滚事务
conn.rollback()
raise e
finally:
cursor.close()
conn.close()
4. 梱包ツール
一般的なデータベース情報は 1 か所に配置されます
- 別のpyファイル
- 環境変数に格納される
#config.py
__config = {
"host":"127.0.0.1",
"user":"student",
"password":"student",
"database":"studentmanagementsystem",
"port":3306,
"charset":"utf8"
}
config = __config
パッケージデータベースファイル
#db_funs.py
#导包
from config import config
class DButils(object):
#初始化
__conn = None
_cursour=None
#DB_utils.py
import logging
import pymysql
from Python.python_SQL.config import config
class DButils():
def __init__(self):
self.__conn=None
self.__cursor = None
#创建连接
def __get_conn(self):
if self.__conn is None:
self.__conn=pymysql.connect(**config)
return self.__conn
#获取游标
def __get_cursor(self):
if self.__cursor is None:
self.__cursor = self.__get_conn().cursor()
return self.__cursor
#执行sql
def exec_sql(self,sql):
try:
#获取游标对象
cursor = self.__get_cursor()
# 调用游标对象的execute方法,执行sql
cursor.execute(sql)
# sql = "select * from xxx" # sql = "update delete insert"
# 如果是查询
if sql.split()[0].lower() == "select": # sql语句中的第一个元素是不是select
# 返回所有数据
return cursor.fetchall()
# 否则:
else:
# 提交事务
self.__conn.commit()
# 返回受影响的行数
return cursor.rowcount # 增删改返回的的影响行数rowcount
pass
except Exception as e:
self.__conn.rollback()
# 打印异常信息
print(e)
logging.info("数据库异常:{}".format(e))
finally:
self.__close_cursor()
self.__close_conn()
# 关闭游标
def __close_cursor(self):
if self.__cursor:
self.__cursor.close()
self.__cursor= None
#关闭数据库
def __close_conn(self):
if self.__conn:
self.__conn.close()
self.__conn= None
テスト
#main.py
from Python.python_SQL.DB_utils import DButils
if __name__ == '__main__':
print("测试pyhon操作数据库")
db = DButils()
#查询
sql = "select * from student"
print(db.exec_sql(sql))
#
sql1 = "INSERT INTO student " \
" VALUES " \
"('00011','莫彬', 0,'2005-08-11', '黑龙江省', '15604653586', '云南省南京市崇文黄路Q座 671564','201149', '[email protected]', '发布')"
print(db.exec_sql(sql1))
sql = "select * from student"
print(db.exec_sql(sql))
注: DButils クラスはどこにありますか?