레이블이 mysql인 게시물을 표시합니다. 모든 게시물 표시
레이블이 mysql인 게시물을 표시합니다. 모든 게시물 표시

2016년 10월 27일 목요일

python 3.5 mysql connect on windows

  1. Download driver (PyMySQL-0.7.9.tar.gz (md5)) from here
  2. Extract and copy the folder pymysql into the python Lib folder e.g (C:\Users\MyUsername\AppData\Local\Programs\Python\Python35-32\Lib)
  3. Copy and run the following example.py
#!/usr/bin/env python

import pymysql

conn = pymysql.connect(host='localhost', port=3306, user='root', passwd='', db='sandbox')

cur = conn.cursor()
cur.execute("SELECT * FROM users")

print(cur.description)
print()

for row in cur:
    print(row)

cur.close()
conn.close()
출처 http://stackoverflow.com/questions/35684400/how-to-use-python-3-5-1-with-a-mysql-dtabase


2016년 10월 13일 목요일

Raspberry Pi에서 Python3.5로 MySQL에 연결

Raspberry Pi에서 Python3.5로  MySQL에 연결하려고 하면

sudo python3 -m pip install pymysql







파이썬 프로그램에서는 다음과 같이
import pymysql

conn = pymysql.connect(host='localhost', port=3306, user='userID', passwd='password', db='db')

cur = conn.cursor()
cur.execute("SELECT * FROM tableName")

print(cur.description)
print()

for row in cur:    print(row)

cur.close()
conn.close()

Python 2.7에서는 다음과 같이...
sudo apt-get install python-mysqldb






2016년 9월 7일 수요일

PHP한글이 깨져 보일때....


php 한글이 깨져 보일때는

1.<head>  <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> </head>

2. mySQL 연동시
   mysql_query("SET NAMES utf8"); <-- 추가

2016년 7월 15일 금요일

mysql datetim colmn group by




datetim 형식으로된 column을 grouping을 다음과 같이 할 수 있습니다.


  -- select DATE(  DTColumn  ) d , -- 날짜별로 그룹핑한 경우
  select HOUR(  DTColumn  ) h ,  -- 시간대별로 그룹핑한 경우

  from tTable
  where 
          condition.........

  -- group by  DATE(  DTColumn  ) -- 날짜별로 그룹핑한 경우
   group by  HOUR(  DTColumn  )   -- 시간대별로 그룹핑한 경우




참고 http://www.plumislandmedia.net/mysql/sql-reporting-time-intervals/

2016년 6월 3일 금요일

c# database table existence check

    public class cTableCheck
    {
        public bool TableExist(string conString, string tableName)
        {
            MySqlConnection Con = new MySqlConnection(conString);
            using (var cmd = new MySqlCommand())
            {
                cmd.Connection = Con;
                var sql = string.Format("select count(*) from information_schema.TABLES where table_name = '{0}'", tableName);
                cmd.CommandText = sql;
                Con.Open();
                var count = Convert.ToInt32(cmd.ExecuteScalar());
                return (count > 0);
            }
        }
    }

2016년 5월 27일 금요일

c# MySql LastInsertedId

MySqlCommand dbcmd = _conn.CreateCommand();
dbcmd.CommandText = sqlCommandString;
dbcmd.ExecuteNonQuery();
long imageId = dbcmd.LastInsertedId;


http://stackoverflow.com/questions/8517841/mysql-last-insert-id-connector-net

2016년 3월 25일 금요일

mysql INSERT INTO table ON DUPLICATE KEY UPDATE table

mySQL에서 있으면 수정하고 없으면 추가

create table machine(
  machine_id int not null primary key
, machine_name varchar(50)
, reg_id int );

INSERT INTO machine (reg_id, machine_id, machine_name) VALUES (1, 1, 'test_machine')
ON DUPLICATE KEY
UPDATE machine_name=VALUES(machine_name);



출처 http://stackoverflow.com/questions/5528854/usage-of-mysqls-if-exists

2016년 3월 21일 월요일

SQL Query SerialNumber

요즘은 주로 mariaDB나 mysql을 사용하는 편인데
ms-sql을 사용할 일이 생겼다.
조회결과에 일련번호를 붙이고 싶은데
다음과 같이 하였다.

DB별로, 버전별로 차이가 있으니 사용시 여기저기 찿아보고 테스트후 사용하시길...

MS-SQL2005이상 :
select ROW_NUMBER() OVER(ORDER BY Co_Code) AS RowNum,
          column1,  column2                                  
from mssql2005Table


MySQL:
SET @ROW_NUMBER = 0;
select @ROW_NUMBER := @ROW_NUMBER+1 rNo, column1,  column2
 from mySQLTable


Oracle:
 select rownum, column1,  column2
 from OracleTable 


2015년 11월 11일 수요일

linux - cron으로 mysql 자동백업

linux - cron으로 mysql 자동백업
 
Shell 작성

# mkdir /backup
# chmod 755 backup
# vi /root/backup.sh

backup.sh
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
#!/bin/sh
DATE=`date +"%Y%m%d"`
PREV_DATE=`date --date '5 days ago' +"%Y%m%d"`

/usr/bin/mysqldump -u사용자id -p비번 DB명 > /backup/mysql_db_bak_${DATE}.sql
chown root.root  /backup/mysql_db_bak_${DATE}.sql
chmod 755  /backup/mysql_db_bak_${DATE}.sql
rm -Rf  /backup/mysql_db_bak_${PREV_DATE}.sql
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

전체DB를 백업하려면
mysqldump -u사용자id -p비번 DB명 > /backup/mysql_db_bak_${DATE}.sql
이 명령어대신
mysqldump  -u사용자id -p비번 -e --all-databases > /backup/mysql_db_bak_${DATE}.sql

 
원격DB백업
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
mysqldump -u 유저 -p"패스워드" -h 아이피주소 -P 포트번호 DBName > 백업명.sql
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
 
# chmod 100 /root/backup.sh


shell이 실행하는지 확인
#./root/backup.sh
실행후 /backup(백업데이터가 저장된폴더)로 가서 파일 확인

Cron 만들기

# crontab -e (매일 6시 백업)

00 06 * * * /root/backup.sh

크론 데몬 재실행
# /etc/rc.d/init.d crond restart

크론 확인
# crontab -l
 원격DB백업 부분은 첨부되었음.

나는 centos 7에서 자동백업 쉘을 만들었는데....
centos 7에는 marisdb 10.1을 설치하였고,
원격은 windows 2012에 mysql 5.6이 설치된상태임.

2015년 10월 22일 목요일

Centos7에 mySQL workbench 설치

어제 centos7을 설치하고  DB는 mysql을 설치하였는데.....

아주 오래전에 유닉스에서 ls 몇번 해보고 이번에 리눅스를 처음 사용하는지라

가능하면 윈도에서 접속해서 쓸려고 하는데...

윈도10에서 workbench가 연결을 몬한다.
(알고보니 IP를 잘못입력하였다는....)

포트를 설정하고, db권한도 주고 다했는데....


그래서 직접 centos에 workbench를 설치했습니다.

이것도  구글로 찾아보니 http://www.dalescott.net/ 에 잘 설명 되어있네요....


Install EPEL (Extra Packages for Enterprise Linux) repositories:
wget https://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm
sudo yum install ./epel-release-7-5.noarch.rpm

Install MySQL repositories:
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
wget http://repo.mysql.com/mysql-community-release-el7.rpm
sudo yum install ./mysql-community-release-el7.5.noarch.rpm
sudo yum install ./mysql-community-release-el7.rpm 

(installing mysql-community-release-el7.rpm produced error: “does not update installed package”)
Install MySQL Workbench.
sudo yum install mysql-workbench

Install additional dependencies (that you would be informed of in error messages, if you invoked mysql-workbench
sudo yum install libzip.x86_64
sudo yum install tinyxml.x86_64

You can now start MySQL Workbench using menu: Applications / Programming / MySQL Workbench

References

  • http://www.cyberciti.biz/faq/installing-rhel-epel-repo-on-centos-redhat-7-x/
  • http://www.linuxpcfix.com/how-to-install-and-configure-mysql-workbench-on-linux-system/

2015년 9월 9일 수요일

mySQL 시간의 합

시간의 함을 구할 때

그냥 SUM만 하면 원하는 값이 나오지 않는다.

이때는  초로 변환하여 second의 합을 구하고, 시간으로 바꾸는 것이 좋더라....

select  SEC_TO_TIME(sum(TIME_TO_SEC( A.TimeColumn )))
  from Table A
  where ....
group by



mySQL 에서 union

mySQL에서의  union(http://dev.mysql.com/doc/refman/5.7/en/union.html)은

mysql.com에 설명이 가장 잘 되어 있습니다.


union은 각각 다른 테이블을 query했을 때의 결과를 한번에 보여주는 효과가 있다.

performance와 별개로 편합니다.performance도 적절한 index가 있다면 문제 없어 보입니다.

오랜만에 union했는데 어렵습니다.

그래서 나처럼 오랜만에 한다거나 또는 처음하시는 분들은 , 거저 참조로만 보시기 바랍니다.

select A.Key, A.Column1, A.Column2
  from Table1 A
  where A.Key = 'itjlife' 
  group by A.Key
union [all]      -- <------all을 넣으면 DISTINCT를 하지 않습니다.
select B.Key, B.Column1, B.Column2
  from Table2 B
  where B.Key = 'itjlife'
  group by B.Key

나의 경우 A에는 Column1이 있고,
                  B에는 Column2가 있습니다.

그런데 이둘 각각의  합이 나오게 하고 싶어서 다음과 같이 시도합니다.

select key, sum(c1) cc1, sum(c2) cc2
from
(
select A.Key key, A.Column1 c1, 0 c2
  from Table1 A
  where A.Key = 'itjlife' 
  group by A.Key
union
select B.Key key, 0 c1, B.Column2 c2
  from Table2 B
  where B.Key = 'itjlife'
  group by B.Key
) T1
group by T1.key

2015년 9월 2일 수요일

mySQL insert not exists

mysql에서 insert하기전에 중복 체크하고 없으면 insert 할 수 있다.
의외로 귀찮다.

체크는 where절에 넣으면 된다.

insert into testTable (ColumnPK, Column1, Column2)
select  'PKData','data1', 'data2' from testTable
where not exists
(
    select  ColumnPKfrom testTable
    where ColumnPK= 'PKData'
)
LIMIT 1;

2015년 8월 26일 수요일

C# WinForm ComboBox 함수

c# winform 에서 콤보박스는 종종 사용하게 되는데,
대부분의 경우 콤보박스는 DB에서 코드값을 넣어 사용합니다.(나의 경우)
이때마다 콤보박스을 채우는 함수를 다음과 같이 만들어 놓으면 편합니다.

public void BindCodeCombo(ComboBox cBox,  string MajorCode)
        {

            try
            {

                MySqlConnection Con = new MySqlConnection(connectStr);
                Con.Open();

                MySqlCommand mcd = new MySqlCommand("select 코드, 코드이름 from code ", Con);
                MySqlDataReader mdr = mcd.ExecuteReader();

                Dictionary<string, string> comboSource = new Dictionary<string, string>();

                while (mdr.Read())
                {
                    comboSource.Add(mdr.GetString("코드"), mdr.GetString("코드이름"));
                }

                cBox.DisplayMember = "Value";
                cBox.ValueMember = "Key";
                cBox.DataSource = new BindingSource(comboSource, null);

                Con.Close();

            }
            catch (Exception eM)
            {
                MessageBox.Show(".BindCodeCombo 실행중 오류가 발생하였습니다.\\n "
                                                 + eM.Message.Replace("'", " ").ToString());
            }
        }

2015년 8월 25일 화요일

mySQL 함수 전화번호

mysql에서 전화번호를 반환하는 함수
전화번호가 10자리이고 처음2자리가 '02' 인 경우만 주의


delimiter $$
DROP PROCEDURE IF EXISTS polarisDB.phoneNumber$$
CREATE FUNCTION polarisDB.phoneNumber( pno VARCHAR(20) ) RETURNS VARCHAR(20)
     BEGIN
          DECLARE p_no VARCHAR(20);
  case length(pno)
       
   when 9 then
    set p_no = concat( left(pno,2), '-', mid(pno,3,3), '-', right(pno,4) );
   when 10 then
    case left(pno,2)
     when '02' then
      set p_no = concat( left(pno,2), '-', mid(pno,3,4), '-', right(pno,4) );
     else
      set p_no = concat( left(pno,3), '-', mid(pno,4,3), '-', right(pno,4) );
     end case;
   when 11 then
    set p_no = concat( left(pno,3), '-', mid(pno,4,4), '-', right(pno,4) );
   when 12 then
    set p_no = concat( left(pno,4), '-', mid(pno,4,4), '-', right(pno,4) );
   else set p_no = pno;
  end case;
        RETURN p_no;
       
     END $$
delimiter ;

vsftpd FTP 서버 접속은 성공하였으나, "디렉토리 목록 조회 실패" 현상 발생시

FTP Passive 모드를 활성화 필요. 1. vsftpd 설정 변경 /etc/vsftpd/vsftpd.conf 상에 아래 내용 추가 기입 #passive modpasv_enable=YES pasv_min_port=5001 pasv...