python連線mysql模擬資料

2021-10-22 23:11:09 字數 4609 閱讀 2642

header

裝置型別

裝置id

資料型別

命令字引數長度

引數校驗字

tail

1acffc1d

01ffffffffffffffffffffffff

0401

0101

ff2ee9c8fd

strs=

"1acffc1d 01 ffffffffffffffffffffffff 04 01 01 01 07 2ee9c8fd"

#模擬完全資料流

# strs="1acffc1d 01 fffffffffffffffffffffffe 04 02 2ee9c8fd" #模擬命令字、引數長度、引數缺失

strs_list=strs.replace(

" ","")

header=strs_list[0:

8]#報頭devicetype=strs_list[8:

10]#裝置型別

deviceid=strs_list[10:

34]#裝置id

datatype = strs_list[34:

36]# 資料型別if(

len(strs_list[36:

])==10):

#判斷資料幀的引數長度、引數字段是否存在,判斷依據:資料型別後字串長度是否僅僅滿足校驗字和報尾的長度。

command =

'ff'

# 命令字

parameterlength =

''# 引數長度

parameters =

''else

:#命令字、引數長度、引數都是從前往後擷取

command=strs_list[36:

38]#命令字

parameterlength=strs_list[38:

40]#引數長度

parameters=strs_list[40:

42]#引數checkword=strs_list[-10

:-8]

#校驗字 從後往前擷取,先將裝置型別、裝置id、資料型別、命令字、引數長度、引數累加和累加和的低八位(有問題)

checkword_first=

str(

hex(

int(devicetype,16)

+int

(deviceid,16)

+int

(datatype,16)

+int

(command,16)

+int

(parameterlength if parameterlength!=

""else

"0",16)

+int

(parameters if parameters!=

""else

"0",16)

))checkword_final=checkword_first[-2

:]#校驗字計算為2個16進製制=1個位元組

tail=strs_list[-8

:]#報尾if

(checkword_final==checkword)

:#判斷接收到的校驗字checkword是否等於計算後的校驗字checkword_final

# 資料翻譯

# 裝置型別

devicetype_list =

devicetype = devicetype_list.get(devicetype)

# 命令字

parameters_list=

""if datatype ==

'03'

:if command ==

'01'

: parameters_list =

elif command ==

'02'

: parameters_list =

elif command ==

'05'

: parameters_list =

elif command ==

'09'

: parameters_list =

elif datatype ==

'04'

:if command ==

'01'

: parameters_list =

elif command ==

'02'

: parameters_list =

elif command ==

'05'

: parameters_list =

elif command ==

'08'

: parameters_list =

elif command ==

'09'

: parameters_list =

parameters=parameters_list.get(parameters.lstrip(

"0")

)# 命令字或狀態幀

command_list =

''if

(datatype ==

'03'):

command_list =

elif datatype ==

'04'

: command_list =

command = command_list.get(command)

# 資料型別

datatype_list =

datatype = datatype_list.get(datatype)

else

: exit(

)

#!/usr/bin/python

# -*- coding: utf-8 -*-

from mysqltest.data_dealwith import

*import mysqldb

# 開啟資料庫連線

db = mysqldb.connect(

"localhost"

,"root"

,"11111"

,"zzw"

, charset=

'utf8'

)# 使用cursor()方法獲取操作游標

cursor = db.cursor(

)# sql 插入語句

sql =

"""insert into deviceinfo_translation(header,device_type, device_id, data_type, command,parameter_length,parameters,check_word,tail)

values ('"""

+header+

"""','"""

+devicetype+

"""','"""

+deviceid+

"""','"""

+datatype+

"""','"""

+command+

"""','"""

+parameterlength+

"""','"""

+parameters+

"""','"""

+checkword+

"""','"""

+tail+

"""')"""

try:

# 執行sql語句

print

(sql)

cursor.execute(sql)

# 提交到資料庫執行

db.commit(

)except

:# rollback in case there is any error

msg=db.rollback(

)# 關閉資料庫連線

db.close(

)

經過翻譯後的資料插入:

未經翻譯後的資料插入:

欄位名字段型別

備註header

varchar(10)

報頭device_type

varchar(20)

裝置型別

device_id

varchar(30)

裝置id

data_type

varchar(10)

資料型別

command

varchar(10)

命令字parameter_length

varchar(4)

引數長度

parameters

varchar(100)

引數check_word

varchar(4)

校驗字tail

varchar(10)

報尾

Python高階 連線 Mysql

本篇文章主要用 pymysql 來實現python3 mysql資料的連線。git clone cd pymysql python3 setup.py install 安裝過程如下圖所示 開啟資料庫連線 db pymysql.connect localhost username password t...

python連線MySQL示例

python連線mysql示例一 開啟資料庫連線 connect,connect,connection import pymysql db pymysql.connect host localhost port 3306 user root passwd 123456 db stu charset ...

mysql 模擬 mysql 模擬四

一,填空題 每空 分,共 分 1 如果乙個mysql的版本號沒有字尾,表示該版本已經在很多地方執行一段時間了,而且沒有非平台特定的錯誤報告。我們通常稱之為 穩定 版。2 可以用幾種方式提供mysql程式的選項 1 在命令列中在程式名後面提供。2 在程式啟動時讀取的中設定 檔案 3 在 環境變數 中設...