我试图了解MySQL关于MetaData对象和engine对象的行为.这个SO-Answer描述MetaData为
表定义的集合
而engine作为
特定数据库的方言和连接详细信息
到现在为止还挺好.但什么时候将这两者分开是有用的?表定义是否未链接到特定数据库?
我很想在MySQL中创建一个触发器,这样每次我将一个值插入一个名为titleHASH 的列时,都应该创建并存储在列中title_hash.由于我不知道这是如何工作的,我在google搜索时发现了这个代码:
CREATE TRIGGER insertModelHash
BEFORE
INSERT
ON
products
FOR EACH ROW SET
NEW.model_hash = CONV(RIGHT(MD5(NEW.products_model), 16), 16, 10)
Run Code Online (Sandbox Code Playgroud)
MySQL-reference告诉我,这意味着:
insertModelHash...products......MD5, RIGHT, CONV列上的函数products_model.3.点需要更多解释:
NEW是新行的某种标识符.所以NEW.products_model指向products_model当前(新)行中的列.MD5发出.由于我想使用SHA-2,因此我很明显可以更改MD5(NEW.products_model), 16)===> SHA2(NEW.products_model), 224).CONV(RIGHT(...)...)?这真的有必要吗?补充信息:现在,我正在做
hashlib.sha224(title).hexdigest()
Run Code Online (Sandbox Code Playgroud)
在Python中存储此值.
我感谢任何建议/解释!
我想使用coo_matrix.nonzero()哪个返回两个数组的元组,其中包含给定矩阵中非零指数的索引.文档中的示例指出:
>>> from scipy.sparse import coo_matrix
>>> A = coo_matrix([[1,2,0],[0,0,3],[4,0,5]])
>>> nonzero_entrys = A.nonzero()
(array([0, 0, 1, 2, 2]), array([0, 1, 2, 0, 2]))
Run Code Online (Sandbox Code Playgroud)
然后我会做类似的事情,len(nonzero_entrys[0])但这似乎是一种转移.我在文档中忽略了一种更好的方法吗?
考虑这个功能:
def escape(text):
print repr(text)
escaped_chars = []
for c in text:
try:
c = c.decode('ascii')
except UnicodeDecodeError:
c = '&{};'.format(htmlentitydefs.codepoint2name[ord(c)])
escaped_chars.append(c)
return ''.join(escaped_chars)
Run Code Online (Sandbox Code Playgroud)
它应该通过相应的htmlentitydefs转义所有非ascii字符.不幸的是python抛出
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe1' in position 0: ordinal not in range(128)
Run Code Online (Sandbox Code Playgroud)
当变量text包含字符串,其repr()是u'Tam\xe1s Horv\xe1th'.
但是,我不使用str.encode().我只用str.decode().我错过了什么吗?
在使用MySQL和一些真正的"性能贪婪的查询"时,我注意到,如果我运行这样一个贪婪的查询,它可能需要2或3分钟来计算.但是如果我在第一次完成后立即重试查询,则只需几秒钟.MySQL存储的内容是"最后的x个查询"吗?
在python和MySQL之间进行交互的推荐方式是什么?目前我正在使用MySQLdb,我从Oursql听到.但我问自己,是否有更合适的方法来管理这个问题.
我在我的Mac(Snow Leopard)上安装了XAMPP并安装了Django.我如何告诉Django使用它,当我启动时,python manage.py runserver我收到此错误:
...
_mysql_exceptions.OperationalError: (2002, "Can't connect to local MySQL server through socket '/opt/local/var/run/mysql5/mysqld.sock' (2)")
Run Code Online (Sandbox Code Playgroud)
我怎么告诉Django使用它?
/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock
Run Code Online (Sandbox Code Playgroud) 假设这个表有近5 000 000行
CREATE TABLE `author2book` (
`author_id` int(11) NOT NULL,
`book_id` int(11) NOT NULL,
KEY `author_id_INDEX` (`author_id`),
KEY `paper_id_INDEX` (`book_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
Run Code Online (Sandbox Code Playgroud)
是有可能添加主索引列id与autoincrement作为首位?我期待这样的事情:
CREATE TABLE `author2book` (
`id` int(11) NOT NULL AUTO_INCREMENT, <<<< This is what I try to achieve!
`author_id` int(11) NOT NULL,
`book_id` int(11) NOT NULL,
KEY `author_id_INDEX` (`author_id`),
KEY `paper_id_INDEX` (`book_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
Run Code Online (Sandbox Code Playgroud)
这可能吗?
编辑:我应该提一下,我想要填充添加的列.
我有一个存储在row类型变量中的浮点值列表(正值和负值)<type 'numpy.ndarray'>.
max_value = max(row)
Run Code Online (Sandbox Code Playgroud)
给了我最大的价值row.有没有一种优雅的方式来选择前3(5,10,...)值?
我想出来了
rowrowrowrow但这肯定是一种丑陋的风格,而不是pythonic.蟒蛇人对此说了些什么?:)
我不仅需要最大三个值,还需要位置(索引输入row).对不起,我忘了提到......
我正在做python koan(对于python 2.6)并且发现了一些我不理解的东西.其中一个文件在第160行中包含以下代码:
class Dog(object):
def __password(self):
return 'password'
Run Code Online (Sandbox Code Playgroud)
这个
rover = Dog()
password = rover.__password()
Run Code Online (Sandbox Code Playgroud)
结果是AttributeError.这对我来说很清楚.(__password(self)由于领先的两个下划线,是某种私人方法).
但是这个
rover._Dog__password()
Run Code Online (Sandbox Code Playgroud)
对我来说是一个谜.有人可以向我解释这是如何或为什么有效或更好地指向我所描述的文档?