標籤:python sqlalchemy編碼 utf8
為了相容中文和其他國家的文字,我們將編碼格式都設定為utf8
mysql設定utf8可以直接修改設定檔,或則通過命令列下的環境變數來進行設定
sqlalchemy設定編碼字元集一定要在資料庫訪問的URL上增加charset=utf8,否則資料庫的串連就不是utf8的編碼格式
eng = create_engine(‘mysql://root:[email protected]:3306/test2?charset=utf8‘,echo=True)
注意URL的後面部分
charset=utf8
這個很關鍵,除了上述兩處需要設定和修改的地方,另外python檔案需要將編碼格式設定為utf8(不帶BOM)的,這樣忘資料庫
直接儲存資料,就可以直接用‘中文‘ ,或則u‘中文‘來正確儲存到mysql資料庫中。
mysql資料庫在dos命令視窗中不能正確顯示中文,如果要查看utf8編碼格式的中文,最好是下載一個mysql的視覺化檢視。
目前我感覺不錯的mysql視覺化檢視是SQLyog。
下面是我寫的使用sqlalchemy寫入資料庫的demo代碼,可以參考參考。
#coding=utf-8from sqlalchemy import Column, String, create_enginefrom sqlalchemy.orm import sessionmakerfrom sqlalchemy.ext.declarative import declarative_baseBase = declarative_base()class User(Base):__tablename__ = 'user2'id = Column(String(20),primary_key=True)name = Column(String(20))class School(Base):__tablename__ = 'school'id = Column(String(20), primary_key=True)name = Column(String(20))#建立從Base派生的所有表def createAll(eng):Base.metadata.create_all(eng)#刪除DB中所有的表def dropAll(eng):Base.metadata.drop_all(eng)#刪除資料庫中從Base派生的所有表#建立session對象if __name__ == '__main__':#建立資料庫引擎eng = create_engine('mysql://root:[email protected]:3306/test2?charset=utf8',echo=True)#設定回顯#eng.echo = True#建立DBSession類型DBSession = sessionmaker(bind=eng)#建立session對象session = DBSession()try:#建立表createAll(eng)#建立新User對象new_user = User(id='13', name='我еёжжщщщьфффтххмлл')print(u'你好嗎')#添加到sessionsession.add(new_user)#提交儲存到資料庫session.commit()except BaseException,e:print('e.message=%s' % str(e.message))finally:session.close()#eng.close()
python環境下使用sqlalchemy和mysql搭建資料庫環境及編碼