通過python給mysql建表


一.python連接mysql

from sqlalchemy import create_engine

# 數據庫數據
HOSTNAME = '127.0.0.1'                      # linux本地
PORT = '3306'
DATABASE = 'mydb'
USERNAME = 'admin'
PASSWORD = 'Root110qwe'

# 數據連接url
db_url = 'mysql+pymysql://{}:{}@{}:{}/{}?charset=utf8'.format(
    USERNAME,
    PASSWORD,
    HOSTNAME,
    PORT,
    DATABASE
)

# 連接到mysql需要用到pymysql
engine = create_engine(db_url)      # 鏈接數據庫

# 建表需要 創建Modle的  Base類
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base(engine)

# 處理表的數據需要  創建會話
from sqlalchemy.orm import sessionmaker
Session = sessionmaker(engine)
session = Session()

# 測試連接
if __name__ == '__main__':
    connection = engine.connect()
    result = connection.execute('select 1')
    print(result.fetchone())

 

二.建表 需要 在連接時創建一個Base類

# 創建Modle的Base類u
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base(engine)

三.建表

通過python的 類 建表,這個類需要繼承Base類 (依靠Base類將表和python的類連接起來

  *  需要繼承Base類

from datetime import datetime
from sqlalchemy import Column,Integer,String,DateTime
from connect import Base

# 把數據庫的表映射成python的類(繼承Base類)  用python中的類(繼承Base類)來表示mysql的表
class User(Base):
    __tablename__ = 'user'
    id = Column(Integer,primary_key=True,autoincrement=True)
    username = Column(String(20),nullable=False)
    password = Column(String(50))
    creatime = Column(DateTime,default=datetime.now())

    def __repr__(self):  # 重寫repr方法
        return "<User(id=%s,username=%s,password=%s,createtime=%s)>" %( self.id, self.username, self.password, self.creatime
        )
if __name__ == '__main__':
    Base.metadata.create_all()

 

四.給建的表添加屬性(增刪改查)

  * 需要創建會話

# 處理表的數據需要 在連接時 創建會話
from sqlalchemy.orm import sessionmaker
Session = sessionmaker(engine)
session = Session()

————————————————————————————————————————————————————————————————————————————————————

增加屬性:

from connect import session        
from user_module import User

# 增加函數
def add_user():
    person = User(username='budong',password='qwe123')
    session.add(person)   # 添加單條數據
    session.add_all(      # 添加多條數據
        [
            User(username='tj',password='123qwe1'),
            User(username='tj1',password='123qwe2'),
            User(username='tj2',password='123qwe3')
        ]
    )
    session.commit()   # 處理數據必須提交事務

增加的屬性結果

+----+----------+----------+---------------------+
| id | username | password | creatime |
+----+----------+----------+---------------------+
| 1 | budong | qwe123 | 2018-03-03 15:46:31 |
| 2 | tj | 123qwe1 | 2018-03-03 15:46:31 |
| 3 | tj1 | 123qwe2 | 2018-03-03 15:46:31 |
| 4 | tj2 | 123qwe3 | 2018-03-03 15:46:31 |
+----+----------+----------+---------------------+



def search_user():
    rows = session.query(User).all()  # all所有的數據  .first() 查詢第一條數據
    print(rows)            # 這兒打印的是repr,所以需要在建表的時候重寫repr方法

查詢的數據結果  

[<User(id=1,username=budong,password=qwe123,createtime=2018-03-03 16:14:35)>, <User(id=2,username=tj,password=123qwe1,createtime=2018-03-03 16:14:35)>, <User(id=3,username=tj1,password=123qwe2,createtime=2018-03-03 16:14:35)>, <User(id=4,username=tj2,password=123qwe3,createtime=2018-03-03 16:14:35)>]

 
def update_user():
    session.query(User).filter(User.username=='tj1').update({User.password:'88888',User.username:'haha'})
    session.commit()

修改的數據結果 --修改了tj1 = haha,password=88888

+----+----------+----------+---------------------+
| id | username | password | creatime |
+----+----------+----------+---------------------+
| 1 | budong | qwe123    | 2018-03-03 16:14:35 |
| 2 | tj | 123qwe1 | 2018-03-03 16:14:35 |
| 3 | haha | 88888 | 2018-03-03 16:14:35 |
| 4 | tj2 | 123qwe3 | 2018-03-03 16:14:35 |
+----+----------+----------+---------------------+

 

a

def delete_user():
    row =session.query(User).filter(User.id==1)[0]   # 相當於 .first()
    session.delete(row)
    session.commit()

刪除數據的結果 --刪除了第一條數據

+----+----------+----------+---------------------+
| id | username | password | creatime |
+----+----------+----------+---------------------+
| 2 | tj | 123qwe1 | 2018-03-03 16:14:35 |
| 3 | haha | 88888 | 2018-03-03 16:14:35 |
| 4 | tj2 | 123qwe3 | 2018-03-03 16:14:35 |
+----+----------+----------+---------------------+

if __name__ == '__main__':
    add_user()
    search_user()
    pdate_user()
    delete_user()

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM