ホームページ  >  記事  >  バックエンド開発  >  python操作SQL

python操作SQL

高洛峰
高洛峰オリジナル
2016-12-02 17:10:384396ブラウズ

pymsqlはMySQLdbとほぼ同じです1. pymysqlをダウンロードしてインストールします

2. SQLを実行します

2。 . 新規作成データの取得 自動インクリメントID

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import pymysql
  
# 创建连接
conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='123', db='t1')
# 创建游标
cursor = conn.cursor()
  
# 执行SQL,并返回收影响行数
effect_row = cursor.execute("update hosts set host = '1.1.1.2'")
  
# 执行SQL,并返回受影响行数
#effect_row = cursor.execute("update hosts set host = '1.1.1.2' where nid > %s", (1,))
  
# 执行SQL,并返回受影响行数
#effect_row = cursor.executemany("insert into hosts(host,color_id)values(%s,%s)", [("1.1.1.11",1),("1.1.1.11",2)])
  
  
# 提交,不然无法保存新建或者修改的数据
conn.commit()
  
# 关闭游标
cursor.close()
# 关闭连接
conn.close()

3. クエリデータの取得

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import pymysql
  
conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='123', db='t1')
cursor = conn.cursor()
cursor.executemany("insert into hosts(host,color_id)values(%s,%s)", [("1.1.1.11",1),("1.1.1.11",2)])
conn.commit()
cursor.close()
conn.close()
  
# 获取最新自增ID
new_id = cursor.lastrowid

注: データを取得するときは、次のようにカーソル位置を移動できます。

cursor.scroll(1, mode ='relative') #現在位置を基準に移動

cursor.scroll(2,mode='absolute') #絶対位置を基準に移動

4. フェッチデータ型。必要な場合は、デフォルトで祖先タイプです。データのタイプ、つまり、

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import pymysql
  
conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='123', db='t1')
cursor = conn.cursor()
cursor.execute("select * from hosts")
  
# 获取第一行数据
row_1 = cursor.fetchone()
  
# 获取前n行数据
# row_2 = cursor.fetchmany(3)
# 获取所有数据
# row_3 = cursor.fetchall()
  
conn.commit()
cursor.close()
conn.close()

SQLAlchemy

SQLAlchemy は、データベース API に基づいて構築されており、リレーショナル オブジェクト マッピングを使用して実行されます。つまり、データベース操作です。オブジェクトを SQL に変換し、データ API を使用して SQL を実行し、実行結果を取得します。

インストール:

pip3 install SQLAlchemy

SQLAlchemy 自体はデータベースを操作できません。データ API と通信し、さまざまなデータベース API を呼び出すために、Dialect が使用されます。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import pymysql
  
conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='123', db='t1')
  
# 游标设置为字典类型
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
r = cursor.execute("call p1()")
  
result = cursor.fetchone()
  
conn.commit()
cursor.close()
conn.close()

1. 内部処理

Engine/ConnectionPooling/Dialect を使用してデータベースに接続し、SQL を実行します。方言による発言。

MySQL-Python
    mysql+mysqldb://<user>:<password>@<host>[:<port>]/<dbname>
   
pymysql
    mysql+pymysql://<username>:<password>@<host>/<dbname>[?<options>]
   
MySQL-Connector
    mysql+mysqlconnector://<user>:<password>@<host>[:<port>]/<dbname>
   
cx_Oracle
    oracle+cx_oracle://user:pass@host:port/dbname[?key=value&key=value...]
python操作SQL2. ORM 関数の使用

ORM/スキーマ タイプ/SQL 式言語/エンジン/接続プーリング/方言のすべてのコンポーネントを使用してデータを操作します。クラスに基づいてオブジェクトを作成し、オブジェクトを SQL に変換し、SQL を実行します。

1. テーブルの作成

#!/usr/bin/env python
# -*- coding:utf-8 -*-
from sqlalchemy import create_engine
  
  
engine = create_engine("mysql+pymysql://root:123@127.0.0.1:3306/t1", max_overflow=5)
  
# 执行SQL
# cur = engine.execute(
#     "INSERT INTO hosts (host, color_id) VALUES (&#39;1.1.1.22&#39;, 3)"
# )
  
# 新插入行自增ID
# cur.lastrowid
  
# 执行SQL
# cur = engine.execute(
#     "INSERT INTO hosts (host, color_id) VALUES(%s, %s)",[(&#39;1.1.1.22&#39;, 3),(&#39;1.1.1.221&#39;, 3),]
# )
  
  
# 执行SQL
# cur = engine.execute(
#     "INSERT INTO hosts (host, color_id) VALUES (%(host)s, %(color_id)s)",
#     host=&#39;1.1.1.99&#39;, color_id=3
# )
  
# 执行SQL
# cur = engine.execute(&#39;select * from hosts&#39;)
# 获取第一行数据
# cur.fetchone()
# 获取第n行数据
# cur.fetchmany(3)
# 获取所有数据
# cur.fetchall()

2. 操作テーブル

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。