반응형

1.mysql 실행 : mariadb를 실행해도 mysql이 link되어 있어서 아무걸로나 실행해도 된다.

#mariadb -u root -p

#mysql -u root -p

 

비밀번호 변경

MariaDB [(none)]> ALTER USER 'root'@'localhost' IDENTIFIED BY '1234';

 

-현재 등록된 user가 뭐가 있는 지 확인하는 방법

- user 내용 보기

'root@모든PC'의 사용자가 접속되도록 하자. 그리고 비밀번호도 1234로 지정하자

MariaDB [(none)]> CREATE USER root@'%' IDENTIFIED BY '1234';
MariaDB [(none)]> GRANT ALL ON *.* root@'%' WITH GRANT OPTION;
MariaDB [(none)]> EXIT
MySQL 데이터베이스에 외부에서 접속할 수 있도록 하려면 몇 가지 단계를 따라야 합니다. 아래는 일반적인 방법을 안내하는 단계입니다.

**중요**: 외부 접속을 허용하는 것은 보안상 위험할 수 있으므로 신중하게 관리해야 합니다. 항상 필요한 보안 조치를 취하고, 권장되는 접근 방식을 따르세요.

1. **MySQL 서버 설정 확인 및 편집**:
   MySQL 서버 설정 파일을 엽니다. 일반적으로 `my.cnf`나 `my.ini`로 불립니다.

2. **바인딩 주소 변경**:
   기본적으로 MySQL 서버는 로컬 호스트에만 바인딩되어 있어 외부에서 접속할 수 없습니다. `bind-address` 항목을 주석 처리하거나 외부 IP 주소로 변경합니다.
   ```ini
   # bind-address = 127.0.0.1
   ```

3. **사용자 계정 및 권한 설정**:
   외부에서 접속할 수 있는 새로운 사용자 계정을 생성하거나, 기존의 사용자 계정을 수정합니다.
   ```sql
   CREATE USER '사용자명'@'외부_IP' IDENTIFIED BY '비밀번호';
   ```

4. **접근 권한 부여**:
   생성한 사용자에게 외부 접근 권한을 부여합니다. 필요한 데이터베이스나 테이블에 대한 권한도 설정합니다.
   ```sql
   GRANT ALL PRIVILEGES ON '데이터베이스명'.* TO '사용자명'@'외부_IP';
   FLUSH PRIVILEGES;
   ```

5. **방화벽 설정**:
   MySQL 서버가 동작하는 포트(기본적으로 3306)가 방화벽에서 열려 있는지 확인하고, 필요하다면 해당 포트를 열어줍니다.

6. **MySQL 서버 재시작**:
   설정 변경이 완료되면 MySQL 서버를 재시작하여 설정을 적용합니다.

이제 외부에서 지정한 IP 주소와 사용자명, 비밀번호를 사용하여 MySQL 데이터베이스에 접속할 수 있어야 합니다. 하지만, 보안을 위해서는 다음과 같은 추가적인 주의사항을 고려해야 합니다:

- **암호화**: 데이터베이스 접속 시 SSL을 사용하여 암호화된 연결을 설정하는 것이 좋습니다.
- **강력한 비밀번호**: 사용자 계정의 비밀번호는 강력하게 설정해야 하며, 주기적으로 변경되어야 합니다.
- **IP 제한**: 필요한 경우 특정 IP 주소만 접속을 허용하도록 설정할 수 있습니다.
- **백업 및 복원**: 데이터베이스의 백업과 복원 절차를 준비하여 데이터 손실을 방지합니다.

이러한 조치들은 데이터베이스의 보안을 강화하고 외부 접속으로 인한 잠재적인 위험을 최소화하는 데 도움이 됩니다.

 

2. SHOW: data base/table확인

SHOW DATABASES; 현재 만들어진 data base들을 보여줌  
SHOW TABLES; 현재 만들어진 table들을 보여줌  
SHOW TABLE STATUS; 명령어를 통한 테이블정보 조회  
show columns from "테이블명";    
show full columns from "테이블명" ;    

 

3.USE : database로 이동

USE "data base명"; data base로 이동  
     

 

 

4. DROP : data base 삭제

DROP DATABASE "data base명"; data base 제거  
DROP TABLE "table명"; table 제거  

 

참고: 외부 접속 방법

https://www.youtube.com/watch?v=kxIGx9_Hrl8

반응형
반응형

1.개요

class란 객체를 생성하는 틀(template)로 data member라고도 불리는 속성과 동작을 수행하는 method로 구성된다.

클래스로부터 객체를 생성하는 것을 인스턴스화라고 하며, 생성된 인스턴스가 가지고 있는 속성과 메서드는 . 표기법을 사용해서 접근할 수 있다.

class A:
    def methodA(self):
        print("method...")
        
a=A() #인스턴스화
a.methodA() # 클래스 메서드 호출

 

2.상속

상속은 클래스가 가지는 모든 속성과 메서드를 다른 클래스에 물려주는 기법이다. 이때 상속해주는 클래스를 부모 클래스 또는 슈퍼 클래스라고 하고, 상속 받는 클래스를 자식 클래스 또는 서브 클래스라고 한다.

 

class 자식 클래스(부모 클래스1, 부모 클래스2, ...):
    pass

 

class A:
    def methodA(self):
        print("Calling A's methodA")
    def method(self):
        print("Calling A's method")

class B:
    def methodB(self):
        print("Calling B's methodB")
class C(A,B):
    def methodC(self):
        print("Calling C's methodC")
    def method(self):
        print("Calling C's overridden method")
        super().method()
        super().methodB()
c=C()
c.methodA()
c.methodB()
c.methodC()
c.method()

 

실행결과

Calling A's methodA
Calling B's methodB
Calling C's methodC
Calling C's overridden method
Calling A's method
Calling B's methodB

3. class variable 와 instance variable

클래스 내부에 존재하면서 메서드 밖에 정의된 변수를 클래스 변수라고 하며, 클래스의 모든 인스턴스는 클래스 변수를 공유한다. 반면에 인스턴스 변수는 메서드 내부에서 정의되며 변수명 앞에 self가 붙는데 해당 인스턴스에서만 사용할 수 있다.

 

4. class method

class내부에 정의된 함수이다. class method의 첫번째 인수는 self로 정의해야 한다. 이 특별한 self 변수는 객체 자신을 의미한다.

 

class NasdaqStock:
    "Class for NASDAQ stocks""" #doc string
    count = 0 # class variable
    def __init__(self,symbol,price):
        """Constructor for NasdaqStock""" # doc string
        self.symbol = symbol #instance variable
        self.price = price #instance variable
        NasDaqStock.count +=1
        print('Calling __init__({},{:.2f}) > count: {}'.format(self.symbol, self.price, NasdaqStock.count))

    def __del__(self):
        "Destructor for NasdaqStock""" # doc string
        print('Calling __del__({})'.format(self))

 

class A:
    def __init__(self):
        self.result = 10
    
    def methodA(self):
        result =20
        print("Calling A's methodA")
        print("result{}".format(result))

    def method(self):
        print("Calling A's method")
        self.methodA()

class B:
    def __init__(self):
        self.result = 20

    def methodB(self):
        print("Calling B's methodB")

class C(A, B):
    def __init__(self):
        self.result = 30

    def methodC(self):
        print("Calling C's methodC")

    def method(self):
        print("Calling C's overridden method")
        super().method()
        super().methodB()

c = C()
c.methodA()
c.methodB()
c.method()
print(c.result)

수행 결과

Calling A's methodA
result20
Calling B's methodB
Calling C's overridden method
Calling A's method
Calling A's methodA
result20
Calling B's methodB
30

self는 자기 자신을 의미하며 

class 공용 변수를 사용할 경우 self.result와 같이 앞에 self를 붙여줘야 한다.

 

 

반응형

'python > python basic' 카테고리의 다른 글

[python]PyMYSQL  (0) 2022.08.07
[python][graph]sine wave  (0) 2018.12.02
python basic  (0) 2018.11.12
python programming  (0) 2018.11.12
[python][serial]serial port list  (0) 2018.11.12
반응형

0.개요

PyMYSQL은 DB(MySQL,mariaDB)같은 DB 프로그램을 사용할 수 있는 python library이다.

 

1.기본 정보

PyMYSQL에 대한 정보는 아래 홈페이지에 접속해서 보면 자세한 내용을 확인할 수 있다. 사용하기 위한 기본 요구사항과 기본 예제,문서, 소스코드를 확인할 수 있다.

PyMYSQL Homepage : https://github.com/PyMySQL/PyMySQL

기본 요구사항은 아래와 같다. 내 PC에 설치된 사항은 CPython 3.10.4이며 mariabd 10.6.7이 설치되어 있다.

Requirements

  • Python -- one of the following:
  • MySQL Server -- one of the following:
#python3 -V
Python 3.10.4

#mariadb -V
mariadb  Ver 15.1 Distrib 10.6.7-MariaDB, for debian-linux-gnu (x86_64) using  EditLine wrapper

 

*maria db에 진입해서 version 정보를 읽는 방법과 실제 version정보를 확인할 수 있다.

이와 동일하게 python에서도 할 수 있는 걸 먼저 python code로 구현해 본다.

#mariadb -u root -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 42
Server version: 10.6.7-MariaDB-2ubuntu1 Ubuntu 22.04

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> select version();
+-------------------------+
| version()               |
+-------------------------+
| 10.6.7-MariaDB-2ubuntu1 |
+-------------------------+
1 row in set (0.000 sec)

 

- mariadb version을 읽어오는 python code

import pymysql

connection = pymysql.connect(host='localhost', port=3306, db='db_name', 
    user='root', passwd='mypasswd', autocommit=True)  

cursor = connection.cursor()
cursor.execute("SELECT VERSION();")
result = cursor.fetchone()

print ("MariaDB version : {}".format(result))

connection.close()

위 코드 수행해서 읽어온 maria db version 정보이며 실제 maria db를 수행해서 읽어온 것과 동일한 것을 확인 할 수있다.

MariaDB version : ('10.6.7-MariaDB-2ubuntu1',)

 

 

잘되다가 아래 에러가 나면서 문제가 되는데 왜 발생하는 지 잘 모르겠다.

import pandas as pd
import yfinance as yf
import pandas_datareader as web
import pymysql
from sqlalchemy import create_engine

tickers = [
    'SPY',  # 미국 주식
    'IEV',  # 유럽 주식 
    'EWJ',  # 일본 주식
    'EEM',  # 이머징 주식
    'TLT',  # 미국 장기채
    'IEF',  # 미국 중기채
    'IYR',  # 미국 리츠
    'RWX',  # 글로벌 리츠
    'GLD',  # 금
    'DBC'  # 상품
]

all_data = {}
for ticker in tickers:
    #all_data[ticker] = web.DataReader(ticker, 'yahoo', start='1993-01-22')
    all_data[ticker] = yf.download(ticker, start='1993-01-22')

prices = pd.DataFrame(
    {tic: data['Adj Close']
     for tic, data in all_data.items()})

engine = create_engine('mysql+pymysql://root:@127.0.0.1:3306/stock_db')
prices.to_sql(name='sample_etf', con=engine, index=True, if_exists='replace')
engine.dispose()

반응형

'python > python basic' 카테고리의 다른 글

[python]class  (0) 2022.08.11
[python][graph]sine wave  (0) 2018.12.02
python basic  (0) 2018.11.12
python programming  (0) 2018.11.12
[python][serial]serial port list  (0) 2018.11.12
반응형

  1 import matplotlib.pyplot as plt
  2 import numpy as np
  3
  4
  5 Fs = 8000
  6 f = 3
  7 sample = 8000
  8 x = np.arange(sample)
  9 y = np.sin(2 * np.pi * f * x / Fs)
 10 plt.plot(x, y)
 11 plt.xlabel('sample(n)')
 12 plt.ylabel('voltage(V)')
 13 plt.show()

 

 

 

 

 

반응형

'python > python basic' 카테고리의 다른 글

[python]class  (0) 2022.08.11
[python]PyMYSQL  (0) 2022.08.07
python basic  (0) 2018.11.12
python programming  (0) 2018.11.12
[python][serial]serial port list  (0) 2018.11.12
반응형

index
my_name[0]

index slicing
my_name[0:5]

docstring
"""this is docstring"""
#19 end escape code
print('This is test') #뒤에 /n이 붙어 있다
print('This is test', end= '')
print('This is test', end='/')

print('This is/n test') #enter
This is
test
print('This is\t test') #Tab
This is  test

print('This', end='\t') print('is')

#20 list
[val1, val2,...]
my_list=[1,2,3]

#20 list add
my_list=[1,2,3]

my_list.append('7')

#my_list
[1,2,3,'7']

#24 tuple
list(mutable)와 동일하게 값을 저장하지만 값을 변경할 수 없는 게 다름

#my_tuple=()

#type(my_tuple)
#class 'tuple'

#my_tuple=(1,2,3)
#my_tubple=1,2,3

#25 packing unpacking
#my_tuple=(1,2,3)
#my_tubple=1,2,3

위 tuple 자체가 packing이다

unpacking은 아래와 같이 packing된 값을 각각의 변수에 대입하는 과정이다.
#num1,num2,num3=my_tuple
#num1
#1
#num2
#2
#num3
#3


만약 num1=1, num2=2의 값을 서로 변경할 경우는
#num1,num2=num2,num1
#num1=2
#num2=1
이렇게 변경된 것을 확인할 수 있다.

#26 for
#
for 변수 in 컨테이너
    실행할 명령어1
    실행할 명령어2
    ...
실행할 명령어  앞에는 space 4개
 또는 tab을 꼭 사용해야 하며 섞어서 사용하면 안되고 1가지로만 사용해야 한다.

#for i in [1,2,3]
    print(i)
#1
#2
#3

#27 range
#range(0,3) # 0,1,2

#
for i in range(1,3)
    print(i)

#28 for x2
#for j in range(2,10)
#    
for i in range(1,10)
#           print('{} * {} = {}' .format{j,i,j*k))

for 2번째 줄은 스페이스 4칸 그 다음줄은 스페이스 8칸을 해야함.

#29 comprehension
나중에 공부하자


#30 할당 연산자(operator)
= += -= *= /=

#31 산술 연산자(operator)
 +  -  *  /
#2+2
#14/3

**(제곱) //(몫만 표시) %
(나머지)
#3**2
#9
#
#32 %
 +  -  *  /
#2+2
#14/3


#33 문자열 연산자
 +  *
#'
hong'+'gil'+'dong'
#honggildong
#'good'*3
#goodgoodgood

#34 비교 연산자(comparison operator)
 ==(같냐?)  != (다르냐?) >(크냐) < (작냐?) >=(크거나 같냐?) <=(작거나 같냐?)


#35 논리 연산자(logical operator)
and or not
#T
rue and True
#True
#True and False
#False
#True or True
#True

#True or False
#True

#not True
#False

#36 맴버쉽 연산자(membership operator)
#member_list=['cat','dog','lion','elephant','lizard']
#'cat' in member_list

#True
#'dong' in member_list

#Flase

#37 if
#if condition:
#    실행할 명령1
#    실행할 
명령2
#        .
#        .
#        .

#38 else, elif
#if condition:
#    실행할 명령1
#    실행할 
명령2
#elif condition:
#    실행할 명령1
#    실행  
명령2

실행할 조건 앞에는 띄어쓰기 4칸을 해야함(권장사항)


#39 while
#while condition:
#    실행할 명령1
#    실행할 
명령2
#elif condition:
#    실행할 명령1
#    실행  
명령2


#40 continue break
continue를 만나면 조건문으로 다시 감.
break 만나면 무한 반복문을 빠져나감.



반응형

'python > python basic' 카테고리의 다른 글

[python]PyMYSQL  (0) 2022.08.07
[python][graph]sine wave  (0) 2018.12.02
python programming  (0) 2018.11.12
[python][serial]serial port list  (0) 2018.11.12
[python][cv2]ImportError:No module named cv2  (0) 2018.11.12
반응형

1.python 특징과 설치

객체 지향언어
대화기능의 인터프리터 언어
동적인 데이터 타입 결정 지원
플랫폼에 독립적
개발 기간 단축에 초점을 둔 언어
간단하고 쉬운 문법
고 수준의 내장 객체 데이터형 제공
메모리 자동 관리(RC)
무료

시스템 관리(스크립팅)-상당히 많은 분야에 사용됨
GUI(pyhQT)
인터넷 프로그래밍
DB 프로그래밍
각종 텍스트 프로세싱
분산처리
수치연산, 그래픽스

2. 데이타 타입
-명명규칙
[_a-zA-Z0-9]*,한글
변수명의예:a,a1,my_name,your_job
잘못된 변수명 : 1abc,@abc,%x
# 주석

-데이터타입
정수
a=10
실수
a=3.14
복소수
a=3+j4
print(a)
print(type(a))
print(a.img)
print(a.real)
print(a.conjugate())
#객체: 속성+메소드
객체.속성
객체.메소드

-문자열 데이터타입
문자열
str
순서있는 데이터 타입
immutable 데이터 타입

#복합(시퀀스) 여러개의 데이터
#순서있는 데이터 타입(인덱스, 슬라이싱)
#[시작:끝:증가치]
#+,*,%
a=10
b=3.14
s='abc'
s1='a=%d b=%f s=%s'%(a, b,s)

s1='abcdefghi'
print(s1[0:4:1])
print(s1[1:4])
print(s1[:5:2])
print(s1[1:])
print(s1[-1:-4:-1])

s = b'abc'
print(s)
print(type(s))
b'abc'
class 'bytes'

s1 = 'abc'
s1 = s1.encode('utf-8')
print(s1)
print(type(s1))
'abc'
class 'bytes'

5강. 시퀀스 데이타타입
순서있는 데이터 타입(인덱스,슬라이싱)
리스트,튜플,문자열,바이트

순서없는 데이터 타입(인덱스,슬라이싱 X)
세트,딕셔너리


변경가능한(mutable) 데이터타입
리스트,딕셔너리,세트

변경불가능한(immutable) 데이터타입
튜플,문자열,바이트


튜플 타입

-오브젝트의 리스트를 저장
-() 또는 tuple() python 내장함수를 이용
-순서있는 데이터 타입
-변경불가능한(immutable) 데이터 타입
-함수의 인자, 리턴에 주로 사용

myT=(10,20,30,40)
print(myT)


packing, unpacking
a,b,c = ( 100,200,300 )# unpacking
a = ( 100,200,300 )# packing


Dictionary Type

-오브젝트를 키와 값으로 저장
-{키:값} 또는 dict() python 내장함수를 이용
-순서없는 데이터 타입
-변경가능한(mutable) data type

myD={10:'aa',20:'bb',30:'cc'}
print(myD.pop(20)) #20요소 삭제됨.
print(myD.keys()) #key값만 출력
print(myD.values()) #value 값만 출력
print(myD.items()) #key값만 출력

Set  Type
-중복없는 데이터를 저장
-{} 또는 set() python 내장함수를 이용
-순서없는 데이터 타입
-변경가능한 데이터 타입
-집합관련 연산자 사용
mySet={10,20,30}
print(mySet[0]) # 순서없는 데이타 타입이므로 에러발생

week#1_exercise

1. 아래의 문자열에 대해 다음을 수행하시오.
s='abcd efgh ijklm'

1)공백을 기준으로 자르시요(리스트의 문자열로).
2)'efgh'문자열을 추출하시요.
   print(s[5:9:1])
3)'ac fhikm'문자열을 추출하시요.
   print(s[::2])
4)'mlkji'문자열을 출출하시요.
    print(s[:8:-1])

2.문자열 객체 변수명이 s인 임의의 하나의 문자열이 주어진 경우 공백 기준으로 자른 뒤 맨 마지막 문자열을 추출하도록 프로그램을 작성하시오.

(예: s='abc def ghi'인 경우 ghi 문자열이 출력되어야 한다.)

Quiz
7.문자열을 bytes type으로 변환하고자 할 때 사용하는 것 
   encode
8.리스트에 요소를 추가하는 리스트 객체 맴버함수명이 아닌것은?
append, put, insert, extend
myList=[1,2,3,4]
my_list.append(50)
myList.insert(1,200)
myList.extend([1,2,3])
myList=myList + [1,2,3]
myList =myList*3
myList.remove(4) #해당 인텍스의 인자를 삭제함.
myList.pop() # 마지막 인자를 삭제
myList.pop(1) #해당 인덱스의 객체를 삭제
del( myList[0] ) #해당 인덱스의 인자를 삭제
n=myList.index(20) #해당값이 있는 인덱스를 리턴해줌
n=len(myList) #요소의 갯수를 리턴



9.아래에 해당하는 데이터 타입에 맞는 것은?
 - 순서있는 데이터 타입
 -변경 불가능한 데이터 타입
 -함수의 인자, 리턴에 주로 사용
 - 함수의 인자, 리턴에 주로 사용
 - 패킹과 언패킹 지원

10.아래의 출력 결과로 맞는 것은?

myD={10:'aa',20:'bb',30:'cc'}
myD[40]='dd'
print(myD)
{40: 'dd', 10: 'aa', 20: 'bb', 30: 'cc'}



함수와 모듈

def 함수명( 인자):

    함수구현부

    return 결과값

함수의 특징

- 두개이상의 값 리턴 가능
- 명시적 인자 호출
- 디폴트인자
- 가변인자
- 정의되지않은 인자

#두개이상의 값 리턴 가능

함수기본

<iframe width="800" height="300" src="http://pythontutor.com/iframe-embed.html#code=def%20hello%28%29%3A%0A%20%20%20%20print%28'hello'%29%0A%20%20%20%20print%28'fn'%29%0A%0Ahello%28%29%0Ahello%28%29&codeDivHeight=400&codeDivWidth=350&cumulative=false&curInstr=0&heapPrimitives=false&origin=opt-frontend.js&py=3&rawInputLstJSON=%5B%5D&textReferences=false"frameborder="0"></iframe>함수기본(리턴과 인자)


================================
def hello():
    print('hello')
    print('fn')

def hap(a,b):
    return a+b

rst=hap(10,20)

def fn1():
    return 10,20,30

rst=fn1()
#hello()
#hello()

=====================================

함수의 특징
-두개 이상의 값 리턴 가능
-명시적 인자 호출
-디폴트인자
-가변인자
-정의되지않은 인자


13강. 파일, 디렉터리 다루기

1.파일객체 = open(파일명, 모드,인코딩)
파일객체를 리턴
2. 파일객체 멤버함수
write
readline
readlines
seek
tell
close
파일열기모드
r
w
a


14강. 시간과 날짜
date():날짜 정보만 가지는 datetime.date 클래스 객체 반환
time():시간 정보만 가지는 datetime.date 클래스 객체 반환
now():날짜 정보만 가지는 datetime.date 클래스 객체 반환

python datetime strtime


시스템과 랜덤함수

sys 모듈 import sys 

- argv: 명령행 인자
- getrefcount(): 참조 개수 반환
- path: 파이썬 패스
- stdin, stdout, stderr: 표준 입력, 출력, 에러 객체

- exit: 스크립트 종료

<sysRandomTest1>

import sys print( sys.argv ) my = sys.argv print( my[1]) 

<sysRandomTest2>

import sys myList = [10,20,30] print( sys.getrefcount(myList)-1 ) 

<sysRandomTest3>

import sys myList = [10,20,30] myList1 = myList print( sys.getrefcount(myList)-1 ) 

<sysRandomTest4>

import sys myList = [10,20,30] myList1 = myList print( sys.getrefcount(myList)-1 ) sys.stdout.write('aa\n') sys.stdout.write('bb'
 

random 모듈 import random

- randrange(시작,끝): 범위의 숫자 반환
- shuffle(시퀀스): 시퀀스를 임의로 배치
- choice(시퀀스 ): 임으로 선택
- Sample(시퀀스,개수): 임으로 갯수만큼선택

<sysRandomTest5>

import sys import random for n in range(5): print( random.randint(1,5) ) 

<sysRandomTest6>

import sys import random myList = [ 1,2,3,4,5] print( myList ) random.shuffle( myList ) print( myList ) 

<sysRandomTest7>

import sys import random myList = [ 1,2,3,4,5] print( myList ) print( random.sample( myList,2 )) 

<sysRandomTest8>

import sys import random #롯또 1~16 임으로 6개선택 rotto = [ n for n in range(1,17)] pr


반응형

'python > python basic' 카테고리의 다른 글

[python][graph]sine wave  (0) 2018.12.02
python basic  (0) 2018.11.12
[python][serial]serial port list  (0) 2018.11.12
[python][cv2]ImportError:No module named cv2  (0) 2018.11.12
[python]SyntaxError:Non-ASCII charater '\xec'  (0) 2018.11.12
반응형

import serial.tools.list_ports as sp
list = sp.comports()
connected = []


for i in list:
connected.append(i.device)
print("Connected COM ports: " + str(connected))


반응형

'python > python basic' 카테고리의 다른 글

python basic  (0) 2018.11.12
python programming  (0) 2018.11.12
[python][cv2]ImportError:No module named cv2  (0) 2018.11.12
[python]SyntaxError:Non-ASCII charater '\xec'  (0) 2018.11.12
[python][source]menu ,input,output data  (0) 2018.11.12
반응형

1.pip install
sudo apt install python-pip
sudo pip install --upgrade pip

아래 명령어로opencv-python 설치해주고 나서 에러 나타나지 않고 정상동작함.(참고, window7, 64bit, python2.7.15)
python -m pip install opencv-python

upgrade 수행되는 과정


참고 자료
문제:  
import cv2 안됨 (Python 3.5, 윈도우 10)

해결: 
1. 관련 파일 다운로드 
  
   Go to  Unofficial Windows Binaries for Python Extension Packages
   (http://www.lfd.uci.edu/~gohlke/pythonlibs/#opencv)


   Download opencv_python‑3.2.0‑cp35‑cp35m‑win_amd64.whl


2. cmd 에서 파일 설치 


   다운로드 된 폴더로 이동 
   i.e. 
   cd C:\Users\user\Downloads

   설치    
   python -m pip install opencv_python-3.2.0-cp35-cp35m-win_amd64.whl






http://blog.naver.com/julypraise/221005831828[출처] import cv2 안됨 (Python 3.5, 윈도우 10)|작성자 영재


반응형

'python > python basic' 카테고리의 다른 글

python programming  (0) 2018.11.12
[python][serial]serial port list  (0) 2018.11.12
[python]SyntaxError:Non-ASCII charater '\xec'  (0) 2018.11.12
[python][source]menu ,input,output data  (0) 2018.11.12
[python]PyQt install  (0) 2018.11.10
반응형

맨 윗줄에 아래 추가해 줌.
# -*- coding: utf-8 -*-

반응형

'python > python basic' 카테고리의 다른 글

python programming  (0) 2018.11.12
[python][serial]serial port list  (0) 2018.11.12
[python][cv2]ImportError:No module named cv2  (0) 2018.11.12
[python][source]menu ,input,output data  (0) 2018.11.12
[python]PyQt install  (0) 2018.11.10
반응형

import sys

list = ['ss', 1,1999, 'aa', 2, 2000, 'cd',4,2110]
def inputData():
    inputdata= 'y' 
    while(inputdata== 'y'):
        gear_name = input('gear name : ')
        list.append( gear_name )
        gear_number = input("gear number: ")
        list.append( gear_number )
        product_date = input("production date(ex:1990-01-01): ")
        list.append(  product_date )
        inputdata = input(" Are you input data(y/n)? ")
    return 0


def outputData():
    print "-----------------------------------------"
    print " gear name    number    production date  "
    print "-----------------------------------------"
    
    start_pos=0
    end_pos=len(list)
    div = 3
    for i in range(start_pos,end_pos+div,div):
        out=list[start_pos:start_pos+div]

        if out!=[]:
            print(out)
            start_pos = start_pos + div

    
def searchData():
    w_data=input("Input data you want to search: ")
    div = 3
    start_pos = 0

    start_pos=list.index(w_data)
    print start_pos
    out=list[start_pos:start_pos+div]
    
    print "-----------------------------------------"
    print " gear name    number    production date  "
    print "-----------------------------------------"
    if out!=[]:
        print(out)
    return 0

def print_menu():
    print "1. Input"
    print "2. Output"
    print "3. Searche"
    print "4. Exit"

loop=True
while loop:
    print_menu()
    choice = input("Enter your choice[1-4] : ")

    if choice == 1:
        print "1.Input Menu has been selected"
        inputData()
    elif choice == 2:
        print "2.Output Menu has been selected"
        outputData() 
    elif choice == 3:
        print "3.Searche Menu has been selected"
        searchData()
    elif choice == 4:
        print "4.Exit Menu has been selected"
    else:
        print "Wrong number has been selected!!"
        loop=False

반응형

'python > python basic' 카테고리의 다른 글

python programming  (0) 2018.11.12
[python][serial]serial port list  (0) 2018.11.12
[python][cv2]ImportError:No module named cv2  (0) 2018.11.12
[python]SyntaxError:Non-ASCII charater '\xec'  (0) 2018.11.12
[python]PyQt install  (0) 2018.11.10
반응형

pyqt는 GUI를 제공하는 프로그램을 만들수 있는 tool 이다.

install
#python -m pip install --upgrade pip
#pip install pyqt5
#pip install pyqt5-tools


#sudo apt-get install python-qt4



reference

https://iqbalnaved.wordpress.com/2014/05/31/installing-pyqt4-for-python-2-7-6-in-virtual-environement-in-ubuntu-14-04/

반응형

+ Recent posts