使用sqlalchemy建表並從txt檔案讀取入庫

2021-10-07 15:13:01 字數 3077 閱讀 5422

首先資料庫要存在,我使用的是mysql資料庫。

from sqlalchemy import column, string, create_engine, integer

from sqlalchemy.orm import sessionmaker, scoped_session

from sqlalchemy.ext.declarative import declarative_base

# 初始化資料庫連線,?charset=utf8處理編碼問題

connection_url =

"mysql+pymysql:"

engine = create_engine(connection_url, echo=

true

, pool_recycle=

7200

, pool_timeout=

3600,)

# echo,控制台是否列印日誌資訊

# 建立物件的基類

base = declarative_base(

)# 建立dbsession型別:

dbsession = sessionmaker(bind=engine)

# session = dbsession()

session = scoped_session(dbsession)

# 執行緒安全

# 建立表

class

zz_info

(base)

:# 定義表名

__tablename__ =

'zz_info'

# 表結構

id= column(integer, primary_key=

true

, autoincrement=

true

) **首頁位址 = column(string(

255)

,unique=

true

) **名稱 = column(string(50)

) 主辦單位名稱 = column(string(

100)

) 網域名稱ip = column(string(60)

) ip的物理位置 = column(string(

300)

) 處理狀態 = column(integer,default=0)

# 設定編碼問題

__table_args__ =

base.metadata.create_all(engine)

# 建立表結構

if __name__ ==

'__main__'

:pass

txt檔案為每行乙個的站點位址。

**中含有注釋說明,直接看**吧

from sqlalchemy import text

from

.model.create_tb import session,zz_info

from loguru import logger

class

add_to_table

(object):

def__init__

(self, session)

: self.session = session

defadd(self, index)

:# self.session.add(ct)

# 使用sql語句

item =

# ignore出現錯誤忽略

sql = text(

) session.execute(sql, item)

if __name__ ==

'__main__'

:# 建立物件

add_to_table = add_to_table(session)

# 這裡encoding為txt的編碼格式

with

open

('domain.txt'

,'r'

, encoding=

'gbk'

)as f:

lines = f.readlines(

)for line in lines:

# 讀取txt檔案,換行會讀取,資料庫顯示會和系統讀取出來的有出入,使用strip()去除空格

add_to_table.add(index=line.strip())

try:

session.commit(

)except exception:

print

(exception)

logger.debug(

'站點資訊入庫完成!'

)

如果出現中文亂碼問題可以看下面這部分

我使用的mysql,一開始入庫中文顯示?亂碼問題,需要修改mysql的編碼格式。在mysql的安裝路徑下修改配置檔案。

win10找到:c:\program files\mysql\mysql server 5.5。修改my.ini檔案的編碼格式。這個預設的編碼是在安裝mysql的時候設定的。

修改配置檔案儲存後需要重啟mysql服務,使用命令重啟mysql:

關閉 net stop mysql

啟動 net start mysql

可以在命令視窗使用命令來檢視mysql的預設編碼。

設定完成。如果入庫資訊中文仍亂碼,試試下面這個。cmd視窗設定編碼格式:

chcp 65001

建表和刪表 sqlalchemy框架

from sqlalchemy.ext.declarative import declarative base 拿到父類 from sqlalchemy import column 拿到字段 from sqlalchemy import create engine 建立引擎 from sqlalch...

建表並修改表約束

主鍵約束 primary key not null check unique 唯一約束 create table student 學生表 xh number 4 constraint pk stu primary key,學號主鍵 xm varchar2 10 constraint nn stu n...

使用SQLAlchemy來構建表

from datetime import datetime from flask sqlalchemy import sqlalchemy from sqlalchemy.dialects.mysql import tinyint,bigint,varchar,char,datetime,integ...