<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Mysql on Council of Elrond</title><link>https://songkou.github.io/tags/mysql/</link><description>Recent content in Mysql on Council of Elrond</description><generator>Hugo</generator><language>en</language><lastBuildDate>Wed, 22 Sep 2021 10:39:22 +0800</lastBuildDate><atom:link href="https://songkou.github.io/tags/mysql/index.xml" rel="self" type="application/rss+xml"/><item><title>Mysql_frequently_used_commands</title><link>https://songkou.github.io/posts/mysql_frequently_used_commands/</link><pubDate>Wed, 22 Sep 2021 10:39:22 +0800</pubDate><guid>https://songkou.github.io/posts/mysql_frequently_used_commands/</guid><description>&lt;p&gt;###Note for frequently used sql commands, just in case forget when long time don&amp;rsquo;t use it&lt;/p&gt;
&lt;p&gt;let&amp;rsquo;s say you want a below table:&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;#&lt;/th&gt;
					&lt;th&gt;name_of column&lt;/th&gt;
					&lt;th&gt;type&lt;/th&gt;
					&lt;th&gt;length&lt;/th&gt;
					&lt;th&gt;can empty&lt;/th&gt;
					&lt;th&gt;master key&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;1&lt;/td&gt;
					&lt;td&gt;id&lt;/td&gt;
					&lt;td&gt;int&lt;/td&gt;
					&lt;td&gt;12&lt;/td&gt;
					&lt;td&gt;no&lt;/td&gt;
					&lt;td&gt;yes&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;2&lt;/td&gt;
					&lt;td&gt;topic&lt;/td&gt;
					&lt;td&gt;varchar&lt;/td&gt;
					&lt;td&gt;255&lt;/td&gt;
					&lt;td&gt;no&lt;/td&gt;
					&lt;td&gt;no&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;3&lt;/td&gt;
					&lt;td&gt;content&lt;/td&gt;
					&lt;td&gt;longtext&lt;/td&gt;
					&lt;td&gt;&lt;/td&gt;
					&lt;td&gt;yes&lt;/td&gt;
					&lt;td&gt;no&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;4&lt;/td&gt;
					&lt;td&gt;tag&lt;/td&gt;
					&lt;td&gt;varchar&lt;/td&gt;
					&lt;td&gt;255&lt;/td&gt;
					&lt;td&gt;yes&lt;/td&gt;
					&lt;td&gt;no&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;5&lt;/td&gt;
					&lt;td&gt;insert_time&lt;/td&gt;
					&lt;td&gt;datetime&lt;/td&gt;
					&lt;td&gt;&lt;/td&gt;
					&lt;td&gt;yes&lt;/td&gt;
					&lt;td&gt;no&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;to create above table:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;CREATE TABLE IF NOT EXISTS `mq_info` ( 
 `id` INT(12) UNSIGNED AUTO_INCREMENT COMMENT &amp;#39;auto increase id&amp;#39;,
 `topic` VARCHAR ( 255 ) NOT NULL COMMENT &amp;#39;topic name&amp;#39;, 
 `content` longtext NOT NULL COMMENT &amp;#39;content&amp;#39;, 
 `tag` VARCHAR ( 255 ) COMMENT &amp;#39;tag of this Message Queue&amp;#39;, 
 PRIMARY KEY ( `id` ) 
) ENGINE = INNODB DEFAULT CHARSET = utf8;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Query all data in table:&lt;/p&gt;</description></item><item><title>Mysql_installation</title><link>https://songkou.github.io/posts/mysql_installation/</link><pubDate>Sun, 07 Feb 2021 18:33:58 +0800</pubDate><guid>https://songkou.github.io/posts/mysql_installation/</guid><description>&lt;p&gt;The general view of the difference between mysql and marinaDB can refer to this link:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blog.panoply.io/a-comparative-vmariadb-vs-mysql"&gt;https://blog.panoply.io/a-comparative-vmariadb-vs-mysql&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;And I quote some here:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;MySQL:&lt;/strong&gt; MySQL is an open-source relational database management system (RDBMS). Just like all other relational databases, MySQL uses tables, constraints, triggers, roles, stored procedures and views as the core components that you work with. A table consists of rows, and each row contains a same set of columns. MySQL uses primary keys to uniquely identify each row (a.k.a record) in a table, and foreign keys to assure the referential integrity between two related tables.&lt;/p&gt;</description></item><item><title>Python_mysql</title><link>https://songkou.github.io/posts/python_mysql/</link><pubDate>Sun, 07 Feb 2021 13:21:07 +0800</pubDate><guid>https://songkou.github.io/posts/python_mysql/</guid><description>&lt;h1 id="python-query-mysql"&gt;Python Query mysql&lt;/h1&gt;
&lt;p&gt;To use Python to query mysql DB. There are two popular modules are used:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;pymysql&lt;/li&gt;
&lt;li&gt;sqlalchemy ( need to install mysqlconnector in my scenario) &lt;code&gt;pip install mysql-connector-python&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="pymysql"&gt;pymysql:&lt;/h3&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;ekoudb = pymysql.connect(host=&amp;#39;10.10.80.127&amp;#39;, 
 port=3306, 
 user=&amp;#39;ekou&amp;#39;, 
 password=&amp;#39;abcd12334&amp;#39;, 
 database=&amp;#39;ekoutest&amp;#39;) 
 
 #get cursor 
cursor = ekoudb.cursor()

def insert_a_item(SqlLang): 
 &amp;#34;&amp;#34;&amp;#34; 
 Insert items &amp;#34;&amp;#34;&amp;#34; 
 try: 
 cursor.execute(SqlLang) 
 ekoudb.commit() 
 except Exception as e: 
 print(&amp;#39;Insert data fail&amp;#39;) 
 print(e) 
 ekoudb.rollback() 
 # release resource 
 cursor.close() 
 ekoudb.close() 
#insert_a_item(SQL_INSERT_A_ITEM)
SQL_INSERT_MANY_ITEMS = &amp;#34;INSERT INTO bird_table (origin, hostname,descr,ver,protocol,neighboraddr,neighboras,status,sinceday,sincetime) VALUES(%s, %s, %s, %s, %s, %s, %s, %s, %s, %s)&amp;#34;

MULTIENTRY = [[&amp;#34;update&amp;#34;,&amp;#34;host1&amp;#34;,&amp;#34;descr1&amp;#34;,&amp;#34;ipv6&amp;#34;,&amp;#34;BGP&amp;#34;,&amp;#34;2123123&amp;#34;,&amp;#34;231233&amp;#34;,&amp;#34;Idle&amp;#34;,&amp;#34;2021-02-02&amp;#34;,&amp;#34;16:50:07&amp;#34;],\ 
[&amp;#34;update&amp;#34;,&amp;#34;host2&amp;#34;,&amp;#34;descr2&amp;#34;,&amp;#34;ipv6&amp;#34;,&amp;#34;BGP&amp;#34;,&amp;#34;ipv6_addr1&amp;#34;,&amp;#34;65300&amp;#34;,&amp;#34;Idle&amp;#34;,&amp;#34;2021-02-02&amp;#34;,&amp;#34;16:50:07&amp;#34;],\ 
[&amp;#34;update&amp;#34;,&amp;#34;host3&amp;#34;,&amp;#34;descr3&amp;#34;,&amp;#34;ipv4&amp;#34;,&amp;#34;BGP&amp;#34;,&amp;#34;10.10.1.1&amp;#34;,&amp;#34;65002&amp;#34;,&amp;#34;Established&amp;#34;,&amp;#34;2021-02-02&amp;#34;,&amp;#34;15:50:13&amp;#34;],\ 
[&amp;#34;update&amp;#34;,&amp;#34;host4&amp;#34;,&amp;#34;descr4&amp;#34;,&amp;#34;ipv4&amp;#34;,&amp;#34;BGP&amp;#34;,&amp;#34;10.10.1.3&amp;#34;,&amp;#34;65003&amp;#34;,&amp;#34;Established&amp;#34;,&amp;#34;2021-02-02&amp;#34;,&amp;#34;15:50:13&amp;#34;]]

def insert_items(MANYTIMESFORMAT,SqlLang): 
 try: 
 cursor.executemany(MANYTIMESFORMAT, SqlLang) 
 ekoudb.commit() 
 except Exception as e: 
 print(&amp;#34;Insert_error&amp;#34;) 
 ekoudb.rollback() 
 # release resource 
 cursor.close() 
 ekoudb.close()

def query(SqlLang): 
 &amp;#34;&amp;#34;&amp;#34;query&amp;#34;&amp;#34;&amp;#34; 
 # query all data 
 cursor.execute(SqlLang) 
 print(&amp;#39;+--------+-----------+---------------------------+------+----------+-\ 
-------------------------+------------+-------------+------------+-----------+&amp;#39;) 
 print(&amp;#39;| origin | hostname | descr | ver | protocol | \ 
 neighboraddr | neighboras | status | sinceday | sincetime |&amp;#39;) 
 print(&amp;#39;+--------+-----------+---------------------------+------+----------+-\ 
-------------------------+------------+-------------+------------+-----------+&amp;#39;) 
 # matrix data 
 rows = cursor.fetchall() 
 for row in rows: 
 origin = row[0] 
 hostname = row[1] 
 descr = row[2] 
 ver = row[3] 
 protocol = row[4] 
 neighboraddr = str(row[5]) 
 neighboras = str(row[6]) 
 status = row[7] 
 sinceday = str(row[7]) 
 sincetime = str(row[9]) 
 
# print(&amp;#39;| &amp;#39; + origin.rjust(2) + &amp;#39;|&amp;#39;.rjust(7) + hostname.rjust(2) + &amp;#39;|&amp;#39;.rjust(10) + descr.rjust(2) + &amp;#39;|&amp;#39;.rjust(26) + ver.rjust(2) + &amp;#39;|&amp;#39;.rjust(5) + protocol.rjust(2) + &amp;#39;|&amp;#39;.rjust(9) + neighboraddr.rjust(2) + + &amp;#39;|&amp;#39;.rjust(25) + neighboras.rjust(2) + &amp;#39;|&amp;#39;.rjust(11) + status.rjust(2) + &amp;#39;|&amp;#39;.rjust(12) + sinceday.rjust(2) + &amp;#39;|&amp;#39;.rjust(11) + sincetime.rjust(2)) 
# print(&amp;#39;| &amp;#39; + origin.rjust(2) + &amp;#39;\t|&amp;#39; + &amp;#39;\t&amp;#39; + hostname + &amp;#39;\t|&amp;#39; + &amp;#39;\t&amp;#39;+ descr + &amp;#39;\t|&amp;#39; + &amp;#39;\t&amp;#39; + ver + &amp;#39;\t|&amp;#39; + &amp;#39;\t&amp;#39; + protocol + &amp;#39;\t|&amp;#39;+&amp;#39;\t&amp;#39;+neighboras + &amp;#39;\t|&amp;#39;+&amp;#39;\t&amp;#39;+neighboraddr + &amp;#39;\t|&amp;#39;+&amp;#39;\t&amp;#39;+status + &amp;#39;\t|&amp;#39;+ &amp;#39;\t&amp;#39; + sinceday + &amp;#39;\t|&amp;#39;+ &amp;#39;\t&amp;#39; +sincetime + &amp;#39;\t|&amp;#39;) 
 print(&amp;#39;|&amp;#39; + format(origin,&amp;#34;&amp;lt;8&amp;#34;) + format(&amp;#34;|&amp;#34;,&amp;#34;&amp;lt;2&amp;#34;) + format(hostname,&amp;#34;&amp;lt;10&amp;#34;) + format(&amp;#34;|&amp;#34;,&amp;#34;&amp;lt;2&amp;#34;) + format(descr,&amp;#34;&amp;lt;26&amp;#34;) + format(&amp;#34;|&amp;#34;,&amp;#34;&amp;lt;2&amp;#34;) + format(ver,&amp;#34;&amp;lt;5&amp;#34;) + format(&amp;#34;|&amp;#34;,&amp;#34;&amp;lt;2&amp;#34;) + format(protocol,&amp;#34;&amp;lt;9&amp;#34;) + format(&amp;#34;|&amp;#34;,&amp;#34;&amp;lt;2&amp;#34;) + format(neighboraddr,&amp;#34;&amp;lt;25&amp;#34;) + format(&amp;#34;|&amp;#34;,&amp;#34;&amp;lt;2&amp;#34;) + format(neighboras,&amp;#34;&amp;lt;11&amp;#34;) + format(&amp;#34;|&amp;#34;,&amp;#34;&amp;lt;2&amp;#34;) + format(status,&amp;#34;&amp;lt;12&amp;#34;) + format(&amp;#34;|&amp;#34;,&amp;#34;&amp;lt;2&amp;#34;) + format(sinceday,&amp;#34;&amp;lt;11&amp;#34;) + format(&amp;#34;|&amp;#34;,&amp;#34;&amp;lt;2&amp;#34;) + format(sincetime,&amp;#34;&amp;lt;10&amp;#34;) + &amp;#34;|&amp;#34; ) 
 print(&amp;#39;+--------+-----------+---------------------------+------+----------+-\ 
-------------------------+------------+-------------+------------+-----------+&amp;#39;) 
 # release resource 
 cursor.close() 
 ekoudb.close()
 


SQL_UPDATE = &amp;#34;UPDATE bird_table SET hostname=&amp;#39;%s&amp;#39;,status=&amp;#39;%s&amp;#39; WHERE descr=&amp;#39;%s&amp;#39;&amp;#34; 
 
def update(SqlLang): 
 &amp;#34;&amp;#34;&amp;#34; 
 update 
 :return: &amp;#34;&amp;#34;&amp;#34; sql_update = SqlLang % (&amp;#39;hostname3&amp;#39;, &amp;#39;connect&amp;#39;, &amp;#39;descr_1&amp;#39;) 
 try: 
 cursor.execute(sql_update) 
 ekoudb.commit() 
 except Exception as e: 
 ekoudb.rollback() 
 print(&amp;#39;error when update data&amp;#39;) 
 print(e) 
 # release resource 
 cursor.close() 
 ekoudb.close() 
 
update(SQL_UPDATE)
SQL_DELETE = &amp;#34;DELETE FROM bird_table WHERE descr=&amp;#39;%s&amp;#39;&amp;#34; 
 
def delete(SqlLang,delete_string): 
 &amp;#34;&amp;#34;&amp;#34; 
 delete record 
 :return: &amp;#34;&amp;#34;&amp;#34; try: 
 # delete sql 
 sql_del = SqlLang % (delete_string) 
 cursor.execute(sql_del) 
 ekoudb.commit() 
 except Exception as e: 
 # rollback when error 
 ekoudb.rollback() 
 print(e) 
 # release resource 
 cursor.close() 
 ekoudb.close() 
 
delete(SQL_DELETE,&amp;#39;23123213213&amp;#39;)
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="sqlalchemy"&gt;sqlalchemy:&lt;/h3&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;engine = create_engine(&amp;#34;mysql+mysqlconnector://ekou:PASSWORD@10.10.80.127:3306/ekoutest?charset=utf8mb4&amp;#34;)

metadata = MetaData(engine) 
 
Session = sessionmaker() # create a customized session 
Session.configure(bind=engine) # link to this session 
session = Session()
users_table = Table(&amp;#39;bird_table&amp;#39;, metadata, autoload=True)

result=users_table.select(and_(users_table.c.descr == &amp;#34;descr&amp;#34;, users_table.c.neighboraddr == &amp;#34;NEIGHBOR_ADDR&amp;#34;)).execute() 
for item in result.fetchall(): 
 print (item)

&amp;#39;&amp;#39;&amp;#39; 
create table 
&amp;#39;&amp;#39;&amp;#39; 
users_table = Table(&amp;#39;users&amp;#39;, 
 metadata, 
 Column(&amp;#39;id&amp;#39;, Integer, primary_key=True), 
 Column(&amp;#39;name&amp;#39;, String(40)), 
 Column(&amp;#39;email&amp;#39;, String(120))) 
if not users_table.exists(): 
 users_table.create() 
 
&amp;#39;&amp;#39;&amp;#39; 
load table 
&amp;#39;&amp;#39;&amp;#39; 
users_table = Table(&amp;#39;users&amp;#39;, metadata, autoload=True) 
 
&amp;#39;&amp;#39;&amp;#39; 
insert 
&amp;#39;&amp;#39;&amp;#39; 
users_table.insert().execute(name=&amp;#34;sss&amp;#34;, email=&amp;#34;eee@eee.com&amp;#34;) 
users_table.insert().execute(name=&amp;#34;ttt&amp;#34;, email=&amp;#34;tt@eee.com&amp;#34;) 
&amp;#39;&amp;#39;&amp;#39; 
update 
&amp;#39;&amp;#39;&amp;#39; 
users_table.update(users_table.c.name == &amp;#34;ttt&amp;#34;).execute(name=&amp;#34;ddd&amp;#34;)
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="conclusion"&gt;conclusion:&lt;/h3&gt;
&lt;p&gt;for easier get on hand, pymsql would be good enough to use. but for advanced, need to use sqlalchemy.&lt;/p&gt;</description></item></channel></rss>