1.使用sqlalchemy時候也遇到很多坑.記錄下來,也讓大家少走彎路.
2.sqlalchemy的orm,真的是很好用,但是對於大型專案,使用很多表,不知道有什麼更好的方式來處理,因為我本人接觸爬蟲專案較多,如果有更好的使用方式,希望能分享一下.
方式1, 使用raw sql;
engine = create_engine('mysql+pymysql:')
engine = create_engine("mysql+pymysql://data_center:[email protected]:3307/data_center", pool_size=10, connect_args=)
result = engine.execute('select * from stock_basics where pe < %s', 2)
# sqlalchemy推薦使用text()函式封裝一下sql字串,不同資料庫, 可以使用統一的sql引數傳遞寫法. 引數須以:號引出.
result = engine.execute(text('select * from stock_basics where pe < :pe'), )
ans = result.fetchall() # 獲取所有資料
ans1 = pd.dataframe(ans) # 將資料轉成 dataframe格式
方式2, sql expression用法from sqlalchemy import *
db = create_engine('mysql:', echo=false)
conn = db.connect()
metadata = metadata(db)
def add():
table = table('t_email', metadata, autoload=true)
i = table.insert()
conn.execute(i, user=u"李松", email="[email protected]")
方式3, 使用orm.
1.第一種寫法
from sqlalchemy import *
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
# 初始化資料庫連線:
db = create_engine("mysql+pymysql://%s:%s@%s/%s" % ('bitone_pro_datasource', 'bitone123.bitone_pro_datasource=', 'bitone.cbcikiouxoi5.ap-northeast-1.rds.amazonaws.com:3306', 'bitone_pro_datasource'),
pool_size=3, pool_recycle=5, connect_args=)
# 建立物件基類:
base = declarative_base()
# 建立dbsession型別:
dbsession = sessionmaker(bind=db)
session = dbsession()
# 定義類
class user(base):
__tablename__="t_user"
id = column(int, primary_key=true, autoincrement=true)
name = column(string(255), nullable=false)
gender = column(string(1), nullable=false, default='f')
age = column(int, nullable=false, default=0)
user = user(name="selena", gender="m", age=32)
session.add(user)
session.commit()
session.close()
2.第二種寫法
from sqlalchemy import *
db = create_engine('mysql://root:admin@localhost:3306/test?charset=utf8', echo=true)
metadata = metadata(db)
user_table = table('t_user', metadata, autoload=true)
class user(object):
pass
# 對映
dbsession = sessionmaker(bind=db)
session = dbsession()
user = user()
user.name = 'ellen'
user.gender = 'm'
user.age = 38
session.add(user)
session.commit()
session.close()
關閉連線
conn.dispose()
Elasticsearch集群部署簡易教程
192.168.250.128 192.168.250.129 192.168.250.130 解壓到安裝目錄 建立乙個es啟動使用者,因為不能用root來啟動,這裡就建乙個叫 elastic 的使用者 adduser elastic passwd elastic 輸入密碼,兩次 改變elastic...
python sqlalchemy程式設計基礎
概念 大家聽不懂很正常 sqlalchemy是python的乙個框架,是python用來運算元據庫的一種框架,給開發者操作sql提供的強大功能和靈活性 declarative base類維持了乙個從類到表的關係,通常乙個應用使用乙個base例項,所有實體類都應該繼承此類物件 的執行的前提 必須提前進...
Python sqlalchemy小白筆記
本來我用的pymysql的方式進行資料庫操作的。請參考 由於工作原因,組內建議用sqlalchemy。所以又開始學習sqlalchemy的使用。本人以連線mysql為例 sqlalchemy 庫是 mike bayer 在 2005 年建立的,現在大大小小很多公司都在使用它。事實上,許多公司都把 s...